Grouping logic in one class to make it cleaner and reuse some code.
Depends on D8662
Build iOS and Android and play with reports to make sure functionality still works.
rebase