<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def insert(self, i, species, coords, validate_proximity=False, properties=None):
 """ Insert a site to the molecule. Args: i (int):
 Index to insert site species: species of inserted site coords (3x1 array):
 coordinates of inserted site validate_proximity (bool):
 Whether to check if inserted site is too close to an existing site. Defaults to True. properties (dict):
 Dict of properties for the Site. Returns: New molecule with inserted site. """

        new_site = Site(species, coords, properties=properties)
        if validate_proximity:
            for site in self:
                if site.distance(new_site) < self.DISTANCE_TOLERANCE:
                    raise ValueError("New site is too close to an existing "
                                     "site!")
        self._sites.insert(i, new_site)