305 complete
306 complete
307 complete. needs refactoring