refactoring
huge change