Refactor report adapter to model as a tree not a stack

@tooky do you think this is an improvement