pre refactoring
working on big refactoring
refactoring