             try raffleVersion(versions, testName: testName)
             
             guard let selectedVersions = selectedVersions[testName] else {
-                throw GollumError.SelectedVersionNotFound("Test \(testName) should have a selected version.")
+                throw GollumError.selectedVersionNotFound("Test \(testName) should have a selected version.")
             }
             
             versionDAO.saveSelectedVersion(selectedVersions, testName: testName)
         }
     }
     
-    public func getSelectedVersion<T: RawRepresentable where T.RawValue == Version>(test: T.Type) throws -> T {
-        let testName = String(test)
+    public func getSelectedVersion<T: RawRepresentable>(_ test: T.Type) throws -> T where T.RawValue == Version {
+        let testName = String(describing: test)
         
         guard let rawValue = selectedVersions[testName],
             let version = test.init(rawValue: rawValue) else {
-                throw GollumError.SelectedVersionNotFound("Test \(testName) should have a selected version.")
+                throw GollumError.selectedVersionNotFound("Test \(testName) should have a selected version.")
         }
         
         return version
     }
     
-    public func isVersionSelected<T: RawRepresentable where T.RawValue == Version>(version: T) throws -> Bool {
+    public func isVersionSelected<T: RawRepresentable>(_ version: T) throws -> Bool where T.RawValue == Version {
         let testName = extractTestName(version)
         
         guard let selectedVersion = selectedVersions[testName] else {
-            throw GollumError.SelectedVersionNotFound("Test \(testName) should have a selected version.")
+            throw GollumError.selectedVersionNotFound("Test \(testName) should have a selected version.")
         }
         
         return selectedVersion == version.rawValue

    
    // MARK: - Public
    
    public func registerVersions<T: RawRepresentable where T.RawValue == Version>(versions: [T]) throws {
        guard let firstVersion = versions.first else {
            throw GollumError.EmptyVersionArrayPassed("A empty version array was passed to registered.")
        }
        
        let testName = extractTestName(firstVersion)

        }
    }
    
    private func isTestProbabilitySumValid(_ versions: [Version]) -> Bool {
        return versions.reduce(0) { $0 + $1.probability } == 1.0
    }
    
