move to an oo design
more oo