refactor classes
merge