Refactor to use recursion
Two levels inheritance, wo/repetition