changing to defered promises, adding projection