moved validate position to a private method
better naming
refactored the way the movements are calculated