docs: def n_cap(self, n_cap='acetyl', cap_dihedral=None):
          """Adds an N-terminal acetamide cap.
  
          Notes
          -----
          Default behaviour is to duplicate the dihedral angle of the
          succeeding residues such that the orientation of the carbonyl
          of the acetyl will resemble that of the first residue. This
          can be adjusted by supplying a cap_dihedral value. Currently
          only acetyl cap is supported, but this structure should work
          for other caps.
  
          Parameters
          ----------
          cap : str, optional
              Type of cap to be added. Options: 'acetyl'
          cap_dihedral : bool
              Alternate psi angle to be used when added cap.
          """
          if n_cap == 'acetyl':
              methylacetamide = Ligand(
                  atoms=None, mol_code='UNK', is_hetero=True)
              atoms = OrderedDict()
              atoms['C'] = Atom([0.9500, -0.2290, 0.5090], 'C', res_label='C')
              atoms['CA'] = Atom([0.7450, -0.9430, 1.8040], 'C', res_label='CA')
              atoms['O'] = Atom([0.1660, -2.0230, 1.8130], 'O', res_label='O')
              atoms['N'] = Atom([1.2540, -0.2750, 2.9010], 'N', res_label='N')
              atoms['CME'] = Atom([1.1630, -0.7870, 4.2500],
                                  'C', res_label='CME')
              # these coordinates seem ok, but could review
              # and use a different fragment if necessary
              methylacetamide.atoms = atoms
              s1, e1, s2, e2 = [
                  x._vector for x in [methylacetamide['N'],
                                      methylacetamide['CME'],
                                      self._monomers[0]['N'],
                                      self._monomers[0]['CA']]]
              translation, angle, axis, point = find_transformations(
                  s1, e1, s2, e2, radians=False)
              methylacetamide.rotate(
                  angle=angle, axis=axis, point=point, radians=False)
              methylacetamide.translate(vector=translation)
              start_angle = dihedral(
                  methylacetamide['C'], self._monomers[0]['N'],
                  self._monomers[0]['CA'], self._monomers[0]['C'])
              ref_angle = dihedral(
                  self._monomers[0]['C'], self._monomers[1]['N'],
                  self._monomers[1]['CA'], self._monomers[1]['C'])
              if cap_dihedral is not None:
                  methylacetamide.rotate(ref_angle - start_angle + cap_dihedral,
                                         axis=methylacetamide['N']._vector -
                                         self._monomers[0]['CA']._vector,
                                         point=methylacetamide['N']._vector)
              else:
                  methylacetamide.rotate(ref_angle - start_angle,
                                         axis=methylacetamide['N']._vector -
                                         self._monomers[0]['CA']._vector,
                                         point=methylacetamide['N']._vector)
              if self.ligands is None:
                  self.ligands = LigandGroup(ampal_parent=self)
              acetamide = Ligand(mol_code='ACM', ampal_parent=self.ligands)
              acetamide_atoms = OrderedDict()
              acetamide_atoms['C'] = atoms['C']
              acetamide_atoms['CA'] = atoms['CA']
              acetamide_atoms['O'] = atoms['O']
              for atom in acetamide_atoms.values():
                  atom.ampal_parent = acetamide
              acetamide.atoms = acetamide_atoms
              self.ligands.append(acetamide)
          else:
              pass  # just in case we want to build different caps in later
          self.tags['assigned_ff'] = False
          return