 {
     public func searchForms(withTerm term: String) -> [LexisWord]
     {
-        if !initialized
-        {
-            initialize()
-        }
-        
-        return web.searchForWordsContaining(term: term)
+        var results = memory.searchForWordsContaining(term: term)
+        
+        if results.notEmpty
+        {
+            return results
+        }
+        
+        results = web.searchForWordsContaining(term: term)
+        
+        if results.notEmpty
+        {
+            startLoadingFromWeb()
+        }
+        
+        return results
     }
     
     public func searchForms(startingWith term: String) -> [LexisWord]
     {
-        if !initialized
-        {
-            initialize()
-        }
-        
-        return web.searchForWordsStartingWith(term: term)
+        var results = memory.searchForWordsStartingWith(term: term)
+        
+        if results.notEmpty
+        {
+            return results
+        }
+        
+        results =  web.searchForWordsStartingWith(term: term)
+        
+        
+        if results.notEmpty //This would mean the web had results but we didn't
+        {
+            startLoadingFromWeb()
+        }
+        
+        return results
     }
     
     public func searchDefinitions(withTerm term: String) -> [LexisWord]
     {
-        if !initialized
-        {
-            initialize()
-        }
-        
-        if let urlEncodedTerms = term.urlEncoded
-        {
-            return web.searchForWordsInDefinitions(term: urlEncodedTerms)
-        }
-        
-        return memory.searchForWordsInDefinitions(term: term)
+        var results = memory.searchForWordsInDefinitions(term: term)
+        
+        if results.notEmpty
+        {
+            return results
+        }
+        
+        guard let urlEncodedTerms = term.urlEncoded else { return [] }
+        
+        results = web.searchForWordsInDefinitions(term: urlEncodedTerms)
+        
+        if results.notEmpty
+        {
+            startLoadingFromWeb()
+        }
+        
+        return results
     }
 }

   
    public static let instance = LexisDatabase()
    
    fileprivate let memory: LexisPersistence = MemoryPersistence()
    fileprivate var persisted = FilePersistence.instance
    fileprivate var web = WebRequestPersistence()

        }
    }
    
}


