<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add(self, calc, module, package=None):
 """ Add calc to layer. """

        super(Calculations, self).add(calc, module, package)
        # only update layer info if it is missing!
        if calc not in self.layer:
            # copy calc source parameters to :attr:`Layer.layer`
            self.layer[calc] = {'module': module, 'package': package}
        # instantiate the calc object
        self.objects[calc] = self.sources[calc]()
        # register calc and dependencies in registry
        calc_src_obj = self.objects[calc]
        meta = [getattr(calc_src_obj, m) for m in self.reg.meta_names]
        self.reg.register(calc_src_obj.calcs, *meta)