diff --git a/bob/bio/base/test/test_scripts.py b/bob/bio/base/test/test_scripts.py
index 0666319cae83b18200ed5baa82d053f0e7590968..4bf6310ffbde47882d392909ac9a6d485222001f 100644
--- a/bob/bio/base/test/test_scripts.py
+++ b/bob/bio/base/test/test_scripts.py
@@ -65,7 +65,7 @@ def _verify(parameters, test_dir, sub_dir, ref_modifier="", score_modifier=('sco
 
 
 def test_verify_local():
-  test_dir = tempfile.mkdtemp(prefix='frltest_')
+  test_dir = tempfile.mkdtemp(prefix='bobtest_')
   # define dummy parameters
   parameters = [
       '-d', os.path.join(dummy_dir, 'database.py'),
@@ -84,7 +84,7 @@ def test_verify_local():
 
 
 def test_verify_resources():
-  test_dir = tempfile.mkdtemp(prefix='frltest_')
+  test_dir = tempfile.mkdtemp(prefix='bobtest_')
   # define dummy parameters
   parameters = [
       '-d', 'dummy',
@@ -103,7 +103,7 @@ def test_verify_resources():
 
 
 def test_verify_commandline():
-  test_dir = tempfile.mkdtemp(prefix='frltest_')
+  test_dir = tempfile.mkdtemp(prefix='bobtest_')
   # define dummy parameters
   parameters = [
       '-d', 'bob.bio.base.test.dummy.database.DummyDatabase()',
@@ -123,7 +123,7 @@ def test_verify_commandline():
 
 @utils.grid_available
 def test_verify_parallel():
-  test_dir = tempfile.mkdtemp(prefix='frltest_')
+  test_dir = tempfile.mkdtemp(prefix='bobtest_')
   test_database = os.path.join(test_dir, "submitted.sql3")
 
   # define dummy parameters
@@ -146,7 +146,7 @@ def test_verify_parallel():
 
 
 def test_verify_compressed():
-  test_dir = tempfile.mkdtemp(prefix='frltest_')
+  test_dir = tempfile.mkdtemp(prefix='bobtest_')
   # define dummy parameters
   parameters = [
       '-d', 'dummy',
@@ -166,7 +166,7 @@ def test_verify_compressed():
 
 
 def test_verify_calibrate():
-  test_dir = tempfile.mkdtemp(prefix='frltest_')
+  test_dir = tempfile.mkdtemp(prefix='bobtest_')
   # define dummy parameters
   parameters = [
       '-d', 'dummy',
@@ -186,7 +186,7 @@ def test_verify_calibrate():
 
 
 def test_verify_fileset():
-  test_dir = tempfile.mkdtemp(prefix='frltest_')
+  test_dir = tempfile.mkdtemp(prefix='bobtest_')
   # define dummy parameters
   parameters = [
       '-d', os.path.join(dummy_dir, 'database.py'),
@@ -210,7 +210,7 @@ def test_verify_filelist():
     import bob.db.verification.filelist
   except ImportError:
     raise SkipTest("Skipping test since bob.db.verification.filelist is not available")
-  test_dir = tempfile.mkdtemp(prefix='frltest_')
+  test_dir = tempfile.mkdtemp(prefix='bobtest_')
   # define dummy parameters
   parameters = [
       '-d', os.path.join(dummy_dir, 'filelist.py'),
@@ -280,7 +280,7 @@ def test11_baselines_api(self):
 
 def test15_evaluate(self):
   # tests our 'evaluate' script using the reference files
-  test_dir = tempfile.mkdtemp(prefix='frltest_')
+  test_dir = tempfile.mkdtemp(prefix='bobtest_')
   reference_files = ('scores-nonorm-dev', 'scores-ztnorm-dev')
   plots = [os.path.join(test_dir, '%s.pdf')%f for f in ['roc', 'cmc', 'det']]
   parameters = [
@@ -305,7 +305,7 @@ def test15_evaluate(self):
 
 def test16_collect_results(self):
   # simply test that the collect_results script works
-  test_dir = tempfile.mkdtemp(prefix='frltest_')
+  test_dir = tempfile.mkdtemp(prefix='bobtest_')
   from facereclib.script.collect_results import main
   main(['--directory', test_dir, '--sort', '--sort-key', 'dir', '--criterion', 'FAR', '--self-test'])
   os.rmdir(test_dir)
@@ -313,7 +313,7 @@ def test16_collect_results(self):
 
 def test21_parameter_script(self):
   self.grid_available()
-  test_dir = tempfile.mkdtemp(prefix='frltest_')
+  test_dir = tempfile.mkdtemp(prefix='bobtest_')
   # tests that the parameter_test.py script works properly
 
   # first test without grid option
diff --git a/bob/bio/base/tools/FileSelector.py b/bob/bio/base/tools/FileSelector.py
index 91d7a47b8b1539e0449e73afcb2e437ecc943d2a..f99ad16677d6a69bc23437f84416d64705ebf463 100644
--- a/bob/bio/base/tools/FileSelector.py
+++ b/bob/bio/base/tools/FileSelector.py
@@ -27,19 +27,23 @@ class FileSelector:
 
     """Initialize the file selector object with the current configuration."""
     self.database = database
-    self.original_directory = database.original_directory
-    self.preprocessed_directory = preprocessed_directory
     self.extractor_file = extractor_file
-    self.extracted_directory = extracted_directory
     self.projector_file = projector_file
-    self.projected_directory = projected_directory
     self.enroller_file = enroller_file
+
     self.model_directories = model_directories
     self.score_directories = score_directories
     self.zt_score_directories = zt_score_directories
     self.default_extension = default_extension
     self.compressed_extension = compressed_extension
 
+    self.directories = {
+      'original'     : database.original_directory,
+      'preprocessed' : preprocessed_directory,
+      'extracted'    : extracted_directory,
+      'projected'    : projected_directory
+    }
+
 
   def uses_probe_file_sets(self):
     """Returns true if the given protocol enables several probe files for scoring."""
@@ -47,13 +51,9 @@ class FileSelector:
 
   def get_paths(self, files, directory_type = None):
     """Returns the list of file names for the given list of File objects."""
-    if directory_type == 'preprocessed':
-      directory = self.preprocessed_directory
-    elif directory_type == 'extracted':
-      directory = self.extracted_directory
-    elif directory_type == 'projected':
-      directory = self.projected_directory
-    else:
+    try:
+      directory = self.directories[directory_type]
+    except KeyError:
       raise ValueError("The given directory type '%s' is not supported." % directory_type)
 
     return self.database.file_names(files, directory, self.default_extension)
diff --git a/bob/bio/base/tools/algorithm.py b/bob/bio/base/tools/algorithm.py
index 93748c227e096e3f64567a2c8e178d15da4453df..d19c7c054bb449727bd000ac0943044c40d40b73 100644
--- a/bob/bio/base/tools/algorithm.py
+++ b/bob/bio/base/tools/algorithm.py
@@ -53,7 +53,7 @@ def project(algorithm, extractor, groups = None, indices = None, force=False):
     else:
       index_range = range(len(feature_files))
 
-    logger.info("- Projection: projecting %d features from directory '%s' to directory '%s'", len(index_range), fs.extracted_directory, fs.projected_directory)
+    logger.info("- Projection: projecting %d features from directory '%s' to directory '%s'", len(index_range), fs.directories['extracted'], fs.directories['projected'])
     # extract the features
     for i in index_range:
       feature_file = str(feature_files[i])
diff --git a/bob/bio/base/tools/extractor.py b/bob/bio/base/tools/extractor.py
index 679b2aa3df2cb01d264b39b65905a7cbe699d369..cf30238c3f71eebb29c9a9acd72a70405ea39d1b 100644
--- a/bob/bio/base/tools/extractor.py
+++ b/bob/bio/base/tools/extractor.py
@@ -45,7 +45,7 @@ def extract(extractor, preprocessor, groups=None, indices = None, force=False):
   else:
     index_range = range(len(data_files))
 
-  logger.info("- Extraction: extracting %d features from directory '%s' to directory '%s'", len(index_range), fs.preprocessed_directory, fs.extracted_directory)
+  logger.info("- Extraction: extracting %d features from directory '%s' to directory '%s'", len(index_range), fs.directories['preprocessed'], fs.directories['extracted'])
   for i in index_range:
     data_file = str(data_files[i])
     feature_file = str(feature_files[i])
diff --git a/bob/bio/base/tools/preprocessor.py b/bob/bio/base/tools/preprocessor.py
index dbd65237a9ddb855210f544616a5ace8f1fe7060..015a18600b580265e5d139dd13093845d6084a2d 100644
--- a/bob/bio/base/tools/preprocessor.py
+++ b/bob/bio/base/tools/preprocessor.py
@@ -23,8 +23,7 @@ def preprocess(preprocessor, groups=None, indices=None, force=False):
   else:
     index_range = range(len(data_files))
 
-  bob.io.base.create_directories_safe(fs.preprocessed_directory)
-  logger.info("- Preprocessing: processing %d data files from directory '%s' to directory '%s'", len(index_range), fs.original_directory, fs.preprocessed_directory)
+  logger.info("- Preprocessing: processing %d data files from directory '%s' to directory '%s'", len(index_range), fs.directories['original'], fs.directories['preprocessed'])
 
   # read annotation files
   annotation_list = fs.annotation_list(groups=groups)
diff --git a/bob/bio/base/utils/io.py b/bob/bio/base/utils/io.py
index 8af99ced9ff41a534a2b43d4757ad31ca5fdf720..b53a5d10f0bf0c42ffc4629dc2d72e0b9ec03c6a 100644
--- a/bob/bio/base/utils/io.py
+++ b/bob/bio/base/utils/io.py
@@ -45,7 +45,7 @@ def open_compressed(filename, open_flag = 'r', compression_type='bz2'):
   In any case, the opened HDF5File is returned, which needs to be closed using the close_compressed() function.
   """
   # create temporary HDF5 file name
-  hdf5_file_name = tempfile.mkstemp('.hdf5', 'frl_')[1]
+  hdf5_file_name = tempfile.mkstemp('.hdf5', 'bob_')[1]
 
   if open_flag == 'r':
     # extract the HDF5 file from the given file name into a temporary file name