#112 refactoring