allow initialize() to return a promise