def load_sample(self, file_path, tags=None):
        """Load a sample (or samples) into workbench
            Args:
                file_path: path to a file or directory
                tags (optional): a list of tags for the sample/samples ['bad','aptz13']
            Returns:
                The list of md5s for all samples
        """

        # Recommend a tag
        if not tags:
            print '\n%sRequired: Add a list of tags when you load samples (put \'unknown\' if you must). \
                   \n\t%sExamples: [\'bad\'], [\'good\'], [\'bad\',\'aptz13\']%s' % (color.Yellow, color.Green, color.Normal)
            return

        # Do they want everything under a directory?
        if os.path.isdir(file_path):
            file_list = self._all_files_in_directory(file_path)
        else:
            file_list = [file_path]

        # Upload the files into workbench
        md5_list = []
        for path in file_list:
            with open(path, 'rb') as my_file:
                raw_bytes = my_file.read()
                md5 = hashlib.md5(raw_bytes).hexdigest()
                if not self.workbench.has_sample(md5):
                    print '%sStreaming Sample...%s' % (color.LightPurple, color.Normal)
                    basename = os.path.basename(path)
                    md5 = self.streamer.stream_to_workbench(raw_bytes, basename, 'unknown', tags)

                print '\n%s  %s%s %sLocked and Loaded...%s\n' % \
                      (self.beer, color.LightPurple, md5[:6], color.Yellow, color.Normal)

                # Add tags to the sample
                self.workbench.add_tags(md5, tags)
                md5_list.append(md5)

        # Pivot on the sample_set
        set_md5 = self.workbench.store_sample_set(md5_list)
        self.pivot(set_md5, '_'.join(tags))

        # Dump out tag information
        self.tags()