removed dependencies, simplified flow, made everything promise based