added diagonal movement