diff --git a/android/build.gradle b/android/build.gradle
index 6afcbbf0cc8ca2d69dd78077d61e59a90b2136bb..9f8d72b4ec5b2b3d290975d6a255917c95300854 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -67,19 +67,19 @@ repositories {
 }
 
 // Generate UUIDs for each models contained in android/src/main/assets/
-tasks.register('genUUID') {
-  doLast {
-    fileTree(dir: "$rootDir/app/src/main/assets", exclude: ['*/*']).visit { fileDetails ->
-      if (fileDetails.directory) {
-        def odir = file("$rootDir/app/src/main/assets/$fileDetails.relativePath")
-        def ofile = file("$odir/uuid")
-        mkdir odir
-        ofile.text = UUID.randomUUID().toString()
-      }
-    }
-  }
-}
-preBuild.dependsOn genUUID
+// tasks.register('genUUID') {
+//   doLast {
+//     fileTree(dir: "$rootDir/app/src/main/assets", exclude: ['*/*']).visit { fileDetails ->
+//       if (fileDetails.directory) {
+//         def odir = file("$rootDir/app/src/main/assets/$fileDetails.relativePath")
+//         def ofile = file("$odir/uuid")
+//         mkdir odir
+//         ofile.text = UUID.randomUUID().toString()
+//       }
+//     }
+//   }
+// }
+// preBuild.dependsOn genUUID
 
 def kotlin_version = getExtOrDefault('kotlinVersion')
 
diff --git a/android/src/main/java/com/reactnativevosk/VoskModule.kt b/android/src/main/java/com/reactnativevosk/VoskModule.kt
index 0e2b6595b1b2cf1ee01c6c64239c4b0ea37fce19..5a8539b9cce8951967640dba755e29a4e3ff404a 100644
--- a/android/src/main/java/com/reactnativevosk/VoskModule.kt
+++ b/android/src/main/java/com/reactnativevosk/VoskModule.kt
@@ -19,13 +19,25 @@ class VoskModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMo
     return "Vosk"
   }
 
+  @ReactMethod
+  fun addListener(type: String?) {
+    // Keep: Required for RN built in Event Emitter Calls.
+  }
+
+  @ReactMethod
+  fun removeListeners(type: Int?) {
+    // Keep: Required for RN built in Event Emitter Calls.
+  }
+
   override fun onResult(hypothesis: String) {
     // Get text data from string object
     val text = getHypothesisText(hypothesis)
 
     // Stop recording if data found
     if (text != null && text.isNotEmpty()) {
-      cleanRecognizer();
+      // Don't auto-stop the recogniser - we want to do that when the user
+      // presses on "stop" only.
+      // cleanRecognizer();
       sendEvent("onResult", text)
     }
   }
@@ -93,12 +105,11 @@ class VoskModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMo
   @ReactMethod
   fun loadModel(path: String, promise: Promise) {
     cleanModel();
-    StorageService.unpack(context, path, "models",
-      { model: Model? ->
-        this.model = model
-        promise.resolve("Model successfully loaded")
-      }
-    ) { e: IOException ->
+    
+    try {
+      this.model = Model(path);
+      promise.resolve("Model successfully loaded")
+    } catch (e: IOException) {
       this.model = null
       promise.reject(e)
     }
@@ -153,6 +164,25 @@ class VoskModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMo
     cleanRecognizer();
   }
 
+  @ReactMethod
+  fun stopOnly() {
+    if (speechService != null) {
+      speechService!!.stop()
+    }
+  }
+
+  @ReactMethod
+  fun cleanup() {
+    if (speechService != null) {
+      speechService!!.shutdown();
+      speechService = null
+    }
+    if (recognizer != null) {
+      recognizer!!.close();
+      recognizer = null;
+    }
+  }
+
   @ReactMethod
   fun unload() {
     cleanRecognizer();
diff --git a/lib/typescript/index.d.ts b/lib/typescript/index.d.ts
index 441e41cc402cca3a60b34978ef4fea976076259c..a173acebb4b314402550442ad471e0f7c706e3c4 100644
--- a/lib/typescript/index.d.ts
+++ b/lib/typescript/index.d.ts
@@ -10,6 +10,8 @@ export default class Vosk {
     currentRegisteredEvents: EmitterSubscription[];
     start: (grammar?: string[] | null) => Promise<String>;
     stop: () => void;
+    stopOnly: () => void;
+    cleanup: () => void;
     unload: () => void;
     onResult: (onResult: (e: VoskEvent) => void) => EventSubscription;
     onFinalResult: (onFinalResult: (e: VoskEvent) => void) => EventSubscription;
diff --git a/package.json b/package.json
index 707eddb8d68007f93071ac659c5b087c935c5f01..90ebe20f224eeec472c377df1fef9b15f2ff8200 100644
--- a/package.json
+++ b/package.json
@@ -11,12 +11,9 @@
     "src",
     "lib",
     "android",
-    "ios",
     "cpp",
-    "react-native-vosk.podspec",
     "!lib/typescript/example",
     "!android/build",
-    "!ios/build",
     "!**/__tests__",
     "!**/__fixtures__",
     "!**/__mocks__"
diff --git a/react-native-vosk.podspec b/react-native-vosk.podspec
deleted file mode 100644
index e3d41b90c5eef890c7a5108aaf16ac07d34a698b..0000000000000000000000000000000000000000
--- a/react-native-vosk.podspec
+++ /dev/null
@@ -1,41 +0,0 @@
-require "json"
-
-package = JSON.parse(File.read(File.join(__dir__, "package.json")))
-folly_version = '2021.06.28.00-v2'
-folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
-
-Pod::Spec.new do |s|
-  s.name         = "react-native-vosk"
-  s.version      = package["version"]
-  s.summary      = package["description"]
-  s.homepage     = package["homepage"]
-  s.license      = package["license"]
-  s.authors      = package["author"]
-
-  s.platforms    = { :ios => "10.0" }
-  s.source       = { :git => "https://github.com/riderodd/react-native-vosk.git", :tag => "#{s.version}" }
-
-  s.source_files = "ios/**/*.{h,m,mm,swift}"
-  s.resource_bundles = { 'Vosk' => ['ios/Vosk/*'] }
-
-  s.dependency "React-Core"
-  s.frameworks = "Accelerate"
-  s.library = "c++"
-  s.vendored_frameworks = "ios/libvosk.xcframework"
-  s.requires_arc = true
-
-  # Don't install the dependencies when we run `pod install` in the old architecture.
-  if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
-    s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
-    s.pod_target_xcconfig    = {
-        "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
-        "CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
-    }
-
-    s.dependency "React-Codegen"
-    s.dependency "RCT-Folly", folly_version
-    s.dependency "RCTRequired"
-    s.dependency "RCTTypeSafety"
-    s.dependency "ReactCommon/turbomodule/core"
-  end
-end
diff --git a/src/index.tsx b/src/index.tsx
index d9f90c921d89b1b4d85e145443ed3376546a368a..29e4068dbd7500828a73145bd25497a52c9bf638 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -69,6 +69,15 @@ export default class Vosk {
     VoskModule.stop();
   };
 
+  stopOnly = () => {
+		VoskModule.stopOnly();
+	};
+
+	cleanup = () => {
+		this.cleanListeners();
+		VoskModule.cleanup();
+	};
+
   unload = () => {
     this.cleanListeners();
     VoskModule.unload();
