I think the solution is done, but should probably do some more testing