 		}
 
 		public function fileDelete(fileName:String):Boolean {
-			callWrapper(AIRSteam_FileDelete, [fileName]);
+			if(!callWrapper(AIRSteam_FileDelete, [fileName])) return false;
 			return readBoolResponse();
 		}
 
 		public function isCloudEnabledForApp():Boolean {
-			callWrapper(AIRSteam_IsCloudEnabledForApp);
+			if(!callWrapper(AIRSteam_IsCloudEnabledForApp)) return false;
 			return readBoolResponse();
 		}
 
 		public function setCloudEnabledForApp(enabled:Boolean):Boolean {
-			callWrapper(AIRSteam_SetCloudEnabledForApp, [enabled]);
+			if(!callWrapper(AIRSteam_SetCloudEnabledForApp, [enabled])) return false;
 			return readBoolResponse();
 		}
 	}

			startProcess();
			if(!_process.running) return false;

			callWrapper(AIRSteam_Init);
			isReady = readBoolResponse();
			if(isReady) _tm = setInterval(runCallbacks, 100);
			return isReady;
		}

		private function callWrapper(funcName:int, params:Array = null):void{
			if(!_process.running) startProcess();

			var stdin:IDataOutput = _process.standardInput;
			stdin.writeUTFBytes(funcName + "\n");

			if(!params) return;

			for(var i:int = 0; i < params.length; ++i) {
				if(params[i] is ByteArray) {
					var length:uint = params[i].length;
					// length + 1 for the added newline
					stdin.writeUTFBytes(String(length + 1) + "\n");
					stdin.writeBytes(params[i]);
					stdin.writeUTFBytes("\n");
				} else {
					stdin.writeUTFBytes(String(params[i]) + "\n");
				}
			}
		}

		private function waitForData(output:IDataInput):uint {
			while(!output.bytesAvailable) {
				// wait
			}

			return output.bytesAvailable;

		private var _file:File;
		private var _process:NativeProcess;
		private var _tm:int;
		private var _error:Boolean = false;

		public var isReady:Boolean = false;

