more cleanup, OO structure