Why does it have to be recursive?