Can this process of adding layers be generalized? 

Assume we have lists like: [('internal-citations', InternalCitationLayer), ('terms', DefinitionsLayer)].  Then we can write a generic function to apply layers. 

def apply_layers(layer_applier, layers_list, regulation, version): 
 for layer_name, layer_class in x: 
  layer = api.layer(layer_name, regulation, version)
  layer_applier.add_layer(layer_class(layer))


Just a thought.