Refactor Problem 15
Recreate Problem 16 & rename Problem 17
Refactor Problem 17
Further refactor Problem 17