pre refactor
refactoring done