refactored class sightly