a little bit of refactoring