Will refactor in another pull request. Promise.