This is still not quite right but I'm bored of this terrible language now