Adding immutable Invoice object and changing Plugin structure