refactoring
more refactoring
merge