refactor for proper classes