added factory file with base promise