heavily based on patterns used by licenses infrastructure, so may appear overengineered for its initial level of use