+ just a little refactoring [need testing]