more refactoring
more changes