Removed recursion --- maybe put back via a flag later