too much OO. scale back the OO.