`setup` returns promise