Worked on #11, optimized some style