working on hillclimbing
raw hill climbing needs refactoring
complete HillClimbing