added more better recursion version from @Mooophy
Merge remote-tracking branch 'refs/remotes/origin/master'