now all dialogs are wrapped inside promises