now with promises included, still working on find gatherering point function