needs promises to spit out results