Finished the normal part of ex 15. Will continue with the extra credit in another commit.