added promises
even more fun