reports logic separated from views