added promises and styling