change to a prototype/mixin model