consistent compose and test
work on enforcing correct usage of overload