massive refactoring
merge