Add support for recursion