         return _paramsValues;
     }
 
-    public function getParamValue(eventParam:String):*
-    {
-        if(_paramsKeys == null){
-            return null;
-        }
-        var index:int = _paramsKeys.indexOf(eventParam);
-        if(index != -1){
-
-            return _paramsValues[index];
-        } else {
-
-            return null;
-        }
-    }
-
-    public function setValueToSum(value:Number):FBEvent
-    {
-        _valueToSum = value;
-        return this;
-    }
-
-    public function addBoolParam(eventParam:String, value:Boolean):FBEvent
-    {
-        if(eventParam == null){
-            throw new ArgumentError("eventParam cannot be null!");
+    //----------------------------------
+    // Private - checking limits https://developers.facebook.com/docs/app-events/faq#limits
+    //----------------------------------
+
+    private static function checkNameRules(name:String):void
+    {
+        if(name == null){
+            throw new ArgumentError("Event name or parameter name cannot be null!");
+        }
+        if(name.length < 2 || name.length > 40){
+            throw new ArgumentError("Event name or parameter name is too short or too long. Length must be between 2 and 40 characters!");
+        }
+        if(!name.match(/[ a-zA-Z0-9_-]*/)){
+            throw new ArgumentError("Event name or parameter name must consist of alphanumeric characters, _, -, or spaces!");
+        }
+    }
+
+    private function checkAddParam(eventParam:String, value:String = null):void
+    {
+        checkNameRules(eventParam);
+
+        if(value != null && value.length > 100){
+            throw new ArgumentError("Value cannot exceed 100 characters!");
         }
         if(_paramsKeys == null){
             _paramsKeys = [];
             _paramsTypes = [];
             _paramsValues = [];
         }
-        _paramsKeys.push(eventParam);
-        _paramsTypes.push(PARAM_TYPE_BOOL);
-        _paramsValues.push(value);
-        return this;
-    }
-
-    public function addStringParam(eventParam:String, value:String):FBEvent
-    {
-        if(eventParam == null){
-            throw new ArgumentError("eventParam cannot be null!");
-        }
-        if(_paramsKeys == null){
-            _paramsKeys = [];
-            _paramsTypes = [];
-            _paramsValues = [];
-        }
-        _paramsKeys.push(eventParam);
-        _paramsTypes.push(PARAM_TYPE_STRING);
-        _paramsValues.push(value);
-        return this;
-    }
-
-    public function addIntParam(eventParam:String, value:int):FBEvent
-    {
-        if(eventParam == null){
-            throw new ArgumentError("eventParam cannot be null!");
-        }
-        if(_paramsKeys == null){
-            _paramsKeys = [];
-            _paramsTypes = [];
-            _paramsValues = [];
-        }
-        _paramsKeys.push(eventParam);
-        _paramsTypes.push(PARAM_TYPE_INT);
-        _paramsValues.push(value);
-        return this;
-    }
-
+        if(_paramsKeys.length == 25){
+            throw new ArgumentError("Maximum number of parameters reached!")
+        }
+    }
+
+    //----------------------------------
+    // Static constructors
+    //----------------------------------
     public static function create_ACHIEVED_LEVEL(level:String):FBEvent
     {
-        return FBEvent.createEvent(FBAppEventsConstants.EVENT_NAME_ACHIEVED_LEVEL)
+        return FBEvent.create(FBAppEventsConstants.EVENT_NAME_ACHIEVED_LEVEL)
                 .addStringParam(FBAppEventsConstants.EVENT_PARAM_LEVEL, level);
     }
 
     public static function create_ACTIVATED_APP():FBEvent
     {
-        return FBEvent.createEvent(FBAppEventsConstants.EVENT_NAME_ACTIVATED_APP);
+        return FBEvent.create(FBAppEventsConstants.EVENT_NAME_ACTIVATED_APP);
     }
 
     public static function create_ADDED_PAYMENT_INFO(success:Boolean):FBEvent
     {
-        return FBEvent.createEvent(FBAppEventsConstants.EVENT_NAME_ADDED_PAYMENT_INFO)
+        return FBEvent.create(FBAppEventsConstants.EVENT_NAME_ADDED_PAYMENT_INFO)
                 .addBoolParam(FBAppEventsConstants.EVENT_PARAM_SUCCESS, success);
     }
 
     public static function create_ADDED_TO_CART(price:Number, contentType:String, contentId:String, currency:String):FBEvent
     {
-        return FBEvent.createEvent(FBAppEventsConstants.EVENT_NAME_ADDED_TO_CART)
+        return FBEvent.create(FBAppEventsConstants.EVENT_NAME_ADDED_TO_CART)
                 .setValueToSum(price)
                 .addStringParam(FBAppEventsConstants.EVENT_PARAM_CONTENT_TYPE, contentType)
                 .addStringParam(FBAppEventsConstants.EVENT_PARAM_CONTENT_ID, contentId)


    public static function create_ADDED_TO_WISHLIST(price:Number, contentType:String, contentId:String, currency:String):FBEvent
    {
        return FBEvent.createEvent(FBAppEventsConstants.EVENT_NAME_ADDED_TO_WISHLIST)
                .setValueToSum(price)
                .addStringParam(FBAppEventsConstants.EVENT_PARAM_CONTENT_TYPE, contentType)
                .addStringParam(FBAppEventsConstants.EVENT_PARAM_CONTENT_ID, contentId)

    }
}
}

class Private{}