Add recursion (this was much harder yet more fun as well)