removed some unnecessary promise semantics