added incremental moves, refactoring