added invoice creator abstraction, this is the factual restructuring part of last commits