more work toward good OOP