Tidied up considerably
Bad way of requiring Promise
Filled in missing details