more reafactoring