some refactoring
mo changes