Uses recursive paramter