starting to morph to o-o, all code still available