using mixins.  Code functionally works, but logically has issues