Thanks guys,
Marius and Charles, you've both suggested using [fexpr~] and I think I might reconsider introducing this object.
So far the aim has been to keep the object set very small and show how things are built from primitives, but all said this makes a good example of where it can be a Swiss army knife for problems, and it does satisfy my "one or two object" constraint.
Use the source