another major refactor. changing to Contructors for object creation. and...

... mixins for re-using features