just a bit more thought to get this recursion working