removed recursions