My attempt

As the commit message says, it's probably pretty Java like, never written a class before in python. Kinda testable I guess?