moving towards recursive templates