Proper recursion support via optional checkRecursive parameter
Documentation and asynch support