diff --git a/.testr.conf b/.testr.conf
index fbea056..9a72d29 100644
--- a/.testr.conf
+++ b/.testr.conf
@@ -1,5 +1,5 @@
 [DEFAULT]
-test_command=${PYTHON:-python} -m subunit.run $LISTOPT $IDOPTION
-test_id_option=$(${PYTHON:-python} -m tools/run_test_classes $IDFILE)
-test_list_option=discover -t ./ ./tempest --list
+test_command=${PYTHON:-python} -m subunit.run discover -t ./ ./tempest $LISTOPT $IDOPTION
+test_id_option=--load-list $IDFILE
+test_list_option=--list
 group_regex=([^\.]*\.)*
diff --git a/tools/run_test_classes.py b/tools/run_test_classes.py
deleted file mode 100755
index c01b046..0000000
--- a/tools/run_test_classes.py
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/env python
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-# Copyright 2013 IBM Corp.
-#
-#    Licensed under the Apache License, Version 2.0 (the "License"); you may
-#    not use this file except in compliance with the License. You may obtain
-#    a copy of the License at
-#
-#         http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-#    License for the specific language governing permissions and limitations
-#    under the License.
-
-import sys
-
-
-def filter_classes(test_ids):
-    test_classes = map(lambda x: x.rsplit('.', 1)[0], test_ids)
-
-    #Remove duplicates from the list
-    uniq_class = {}
-    result = []
-    for test_class in test_classes:
-        if test_class in uniq_class:
-            continue
-        uniq_class[test_class] = 1
-        result.append(test_class)
-    return result
-
-
-def usage():
-    msg = """
-    This command is used to filter out the unique list of test cases (classes)
-    from a list of testr test_ids.
-
-    Usage: run_test_classes.py <test id file>
-          """
-    print(msg)
-    sys.exit(1)
-
-
-def main():
-    if len(sys.argv) == 2:
-        test_list_path = sys.argv[1]
-        test_list_file = open(test_list_path, 'r')
-        test_list = test_list_file.readlines()
-        for test_class in filter_classes(test_list):
-            print test_class
-        test_list_file.close()
-    else:
-        usage()
-
-if __name__ == '__main__':
-    main()
