added promise type