going to refactor
...