finish adding most of move calculation logic