a 2d backend i created to get a decent grasp on OOP