refactoring
full hand test