 		
 		//--------------------------------------------------------------------------
 		//
-		//  Private methods
-		//
-		//--------------------------------------------------------------------------
-		
-		private function execHandler(name:String, params:Array):void
-		{
+		//  Event handlers
+		//
+		//--------------------------------------------------------------------------
+		
+		private function execHandler(name:String, params:Array = null):void
+		{
+			if (!isValidAlias(name)) throw new ArgumentError("name");
+			
+			if (!functionsMap[name])
+				throw new IllegalOperationError("Mapping with alias '" + name + "' does not exist.");
+			
+			if (params == null)
+				params = [];
+			
 			functionsMap[name].apply(null, params);
 		}
 		
 		private function updateBindingHandler(name:String, value:*):void
 		{
+			if (!isValidAlias(name)) throw new ArgumentError("name");
+			
 			doBinding(name).setValue(value);
 		}
 		

			if (!_isAvailable)
				throw new IllegalOperationError("External interface is not available.");
			
			delete functionsMap[name];
		}
		
		internal function doInvoke(name:String, params:Array):void
		{	
			if (!_isAvailable)
				throw new IllegalOperationError("External interface is not available.");

			ExternalInterface.call("$FlashWarp", _id, "exec", [name, params]);
		}
		
		internal function doBinding(name:String):Observable
		{
			var observable:Observable = bidningsMap[name] as Observable;
			
			if (observable == null)

	import flash.external.ExternalInterface;
	import flash.utils.Dictionary;

	/**
	 * JavaScript-Flash bridge.
	 * 
	 * @author Artem Abashev
	 */
	public final class FlashWarp
	{
		public function FlashWarp()
