build in promisify and thunknify