Final refactor of Lab4, didn't upload when done