Added support for recursion