recursion removed