trying promises
using promises instead of callbacks