<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def list_components(self):
 """List all of the registered component names. This list will include all of the permanently stored components as well as any temporary components that were added with a temporary=True flag in this session. Returns: list of str: The list of component names. Any of these names can be passed to get_component as is to get the corresponding IOTile object. """


        overlays = list(self._component_overlays)
        items = self.kvstore.get_all()

        return overlays + [x[0] for x in items if not x[0].startswith('config:')]