Implement all movement rules