basically done, just one game-breaking bug to find