Revise circuits module, improve models, use Exceptions, factor out common code