     var tracker: GAITracker!;
 
     /** Constants used to define callbacks in the register and in the execute method */
-    let GA_init = "GA_init";
-    let GA_set = "GA_set";
-    let GA_setUserId = "GA_setUserId";
-    let GA_tagScreen = "GA_tagScreen";
-    let GA_tagEvent = "GA_tagEvent";
+    let GA_INIT = "GA_init";
+    let GA_SET = "GA_set";
+    let GA_IDENTIFY = "GA_identify";
+    let GA_TAG_SREEN = "GA_tagScreen";
+    let GA_TAG_EVENT = "GA_tagEvent";
+
+    let TRACKING_ID = "trackingId";
+    let TRACK_UNCAUGHT_EXCEPTIONS = "trackUncaughtExceptions";
+    let ALLOW_IDFA_COLLECTION = "allowIdfaCollection";
+    let DISPATCH_INTERVAL = "dispatchInterval";
+    let EVENT_ACTION = "eventAction";
+    let EVENT_CATEGORY = "eventCategory";
+    let EVENT_LABEL = "eventLabel";
+    let EVENT_VALUE = "eventValue";
 
 
 /* ************************************ Handler core methods ************************************ */

        gai?.trackUncaughtExceptions = true;  // report uncaught exceptions
        // the log level of GA is decided from the log level of the Cargo logger
        switch (logger.level) {
        case kTAGLoggerLogLevelNone:
            gai?.logger.logLevel = GAILogLevel.none;
            break ;
        case kTAGLoggerLogLevelInfo:
            gai?.logger.logLevel = GAILogLevel.info;
            break ;
        case kTAGLoggerLogLevelWarning:
            gai?.logger.logLevel = GAILogLevel.warning;
            break ;
        case kTAGLoggerLogLevelDebug:
            gai?.logger.logLevel = GAILogLevel.warning;
            break ;
        case kTAGLoggerLogLevelVerbose:
            gai?.logger.logLevel = GAILogLevel.verbose;
            break ;
        default:
            gai?.logger.logLevel = GAILogLevel.error;
        }
    }


    override func execute(_ tagName: String, parameters: [AnyHashable: Any]) {
        super.execute(tagName, parameters: parameters);
        
        if (tagName == GA_INIT) {
            self.initialize(parameters);
        }
        // check whether the SDK has been initialized before calling any method
        else if (self.initialized) {
            switch (tagName) {
                case GA_SET:
                    self.set(parameters);
                    break ;
                case GA_IDENTIFY:
                    self.identify(parameters);
                    break ;
                case GA_TAG_EVENT:
                    self.tagEvent(parameters);
                    break ;
                case GA_TAG_SREEN:
                    self.tagScreen(parameters);
                    break ;
                default:
