updated to use the promise mixin (dependency)