recursion done... not so performant...