refactoring, now all interactions on invoices go through InvoiceRepository