use  promises (RSVP) instead of node callback style