     let BASKET = "isBasketView";
     let ACTION = "action";
 
+    /** The tracker of the AT Internet SDK which sends the events */
     var tracker: Tracker;
 
-/* ************************************* Initializer *************************************** */
-
-    /**
-     *  Initialize the handler
+
+
+/* ************************************ Handler core methods ************************************ */
+
+    /**
+     *  Initialize the handler, sets the default tracker and register the callbacks to the container
+     *  Call it in the AppDelegate after you retrieved the GTM container and initialized Cargo.
      */
     init() {
         self.tracker = ATInternet.sharedInstance.defaultTracker;

        cargo.registerTagHandler(self, key: AT_tagEvent);
    }

/* ******************************** Core handler methods *********************************** */

    /**
     *  Call back from GTM container to execute a specific action
     *  after tag and parameters are received
     *
     *  @param tagName  The tag name
     *  @param parameters   Dictionary of parameters
     */
    override func execute(_ tagName: String, parameters: [AnyHashable: Any]) {
        super.execute(tagName, parameters: parameters);

        if (tagName == AT_init) {
            self.initialize(parameters);
        }
        else if (initialized == true) {
            switch (tagName) {
            case AT_setConfig:

     * The method you may call if you want to reconfigure your tracker
     *
     *  @param parameters   Dictionary of parameters
     *                      * override (boolean) : if you want your values to override the existant data
     *                      * Dictionary ([String: String]) : your setup for the tracker
     */
    func setConfig(parameters: [AnyHashable: Any]) {
        var params = parameters;
