more changes
even more refactoring