add a different approach using mixins...