Recursion is a powerful.  Don't use it except required