[refactor] starting to segregate logic more

Thanks @attamusc for the help