<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def load(self, rel_path=None):
 """ Add data_sources to layer and open files with data for the data_source. """

        for k, v in self.layer.iteritems():
            self.add(k, v['module'], v.get('package'))
            filename = v.get('filename')
            path = v.get('path')
            if filename:
                # default path for data is in ../data
                if not path:
                    path = rel_path
                else:
                    path = os.path.join(rel_path, path)
                # filename can be a list or a string, concatenate list with
                # os.pathsep and append the full path to strings.
                if isinstance(filename, basestring):
                    filename = os.path.join(path, filename)
                else:
                    file_list = [os.path.join(path, f) for f in filename]
                    filename = os.path.pathsep.join(file_list)
                self.open(k, filename)