added promise-mixin (not required?)