still refactoring
more refactoring