refactor of the DataApi and adding recursiveRequest