tidy up
changed input to be composed rather than mixin