   }
   {
     #specials url
-    'match': '\\s*\{\\s*(url)\\s*[\\(\\|]'
-    'captures':
-      '1':
-        'name': 'entity.name.function.siteini'
-  }
-  {
-    #specials url with preload
-    'match': '(preload)\\s*=\\s*".+?"\\s*\\)\\s*\\|'
-    'captures':
-      '1':
-        'name': 'entity.name.tag.siteini'
-  }
+    'match': '\\s*\\{\\s*(url)'
+    'captures':
+      '1':
+        'name': 'entity.name.function.siteini'
+  }
+  {
+    #specials url with urlencode(mdb)
+    'match': '\\((urlencode)=\\s*\\d(,\\d)?(,\\d)?(,\\d)?\\s*\\)\\s*\\|'
+    'captures':
+      '1':
+        'name': 'entity.name.tag.siteini'
+    }
   {
     # specials within ( =param)
-    'match': '[\\s+\\(](separator|span|step|count|pattern|target|tags|timespan|alloc|max|link|timezone)\\s*='
-    'captures':
-      '1':
+    'match': '[\\s+\\(](separator|span|step|count|pattern|target|tags|timespan|alloc|max|link|timezone)'
+    'captures':
+      '1':
+        'name': 'entity.name.tag.siteini'
+  }
+  {
+    # specials removeduplicates
+    'match': '[\\s+\\(](removeduplicates)=?(name|title|equal)?,?(\\d+)?'
+    'captures':
+      '1':
+        'name': 'entity.name.tag.siteini'
+      '2':
+        'name': 'entity.name.function.siteini'
+      '3':
         'name': 'entity.name.tag.siteini'
   }
   {
     # specials within ()
-    'match': '(removeduplicates|keepfirst|keeplast|force)=*(name(,\\d+)?|title(,\\d+)?|equal(,\\d+)?)?'
-    'captures':
-      '1':
-        'name': 'entity.name.tag.siteini'
-      '2':
-        'name': 'entity.name.function.siteini'
-  }
+    'match': '(force|(not)?null|keep(first|last)|each)'
+    'captures':
+      '1':
+        'name': 'entity.name.tag.siteini'
+    }
   {
     # xmltv attributes
     'match': '\\((lang|system|role|src|width|height|start|channel)\\s*='

  }
  {
    #elements
    'match': '^\\s*(url_index|url_preload|index_urlshow|index_urlsubdetail|site|urldate|subpage|urlshow|urlsubdetail|url_primarysearch|url_mdb(_p[1-8])?|showsplit|date|start|stop|duration|(mdb_)?title(original)?|(index_)?temp_[1-9]|site_channel|site_id|sort_by|index_showsplit|index_date|index_start|index_stop|index_duration|index_title(original)?|(index|mdb)_variable_element|index_site_channel|index_site_id|index_sort_by|detail_urlshow|detail_urlsubdetail|detail_showsplit|detail_date|detail_start|detail_stop|detail_duration|detail_site_channel|detail_site_id|detail_sort_by|(index_|detail_|subdetail_|mdb_)?(title(original)?|subtitles?|description|director|actor|presenter|writer|producer|composer|commentator|rating(icon)?|category|productiondate|country|starrating(votes)?|episode(_id|numlist|titlelist)?|premiere|previousshown|videoaspect|videoquality|showicon|urlchannellogo)|previous_start|previous_stop|previous_duration|channel|urldate|now|showdate|config_(site_id|site_channel|xmltv_id|display_name|timespan_days|credentials_user|credentials_password)|global_temp_[1-9]|(previous_)?(index_|detail_|subdetail_|mdb_)?temp_[1-9]|mdb_(show_id|plot|commentsummary|review)|x_((sub)?title|productiondate|actor|director))'
    'captures':
      '1':
        'name': 'storage.type.siteini'
  }
  {
    #elements (in single quotes)
    'match': '([\'\"](url_index|url_preload|index_urlshow|index_urlsubdetail|site|urldate|subpage|urlshow|urlsubdetail|url_primarysearch|url_mdb(_p[1-8])?|showsplit|date|start|stop|duration|(mdb_)?title(original)?|(index_)?temp_[1-9]|site_channel|site_id|sort_by|index_showsplit|index_date|index_start|index_stop|index_duration|index_title(original)?|(index|mdb)_variable_element|index_site_channel|index_site_id|index_sort_by|detail_urlshow|detail_urlsubdetail|detail_showsplit|detail_date|detail_start|detail_stop|detail_duration|detail_site_channel|detail_site_id|detail_sort_by|(index_|detail_|subdetail_|mdb_)?(title(original)?|subtitles?|description|director|actor|presenter|writer|producer|composer|commentator|rating(icon)?|category|productiondate|country|starrating(votes)?|episode(_id|numlist|titlelist)?|premiere|previousshown|videoaspect|videoquality|showicon|urlchannellogo)|previous_start|previous_stop|previous_duration|channel|urldate|now|showdate|config_(site_id|site_channel|xmltv_id|display_name|timespan_days|credentials_user|credentials_password)|global_temp_[1-9]|(previous_)?(index_|detail_|subdetail_|mdb_)?temp_[1-9]|mdb_(show_id|plot|commentsummary|review)|x_((sub)?title|productiondate|actor|director))[\'\"])'
    'captures':
      '2':
        'name': 'storage.type.siteini'
  }
  {
    #modifier after modify
    'match': '\\.(modify)(\\s*\{\\s*(set|calculate|clear|cleanup|substring|remove|addstart|addend|single|replace|select))'
    'captures':
      '1':
        'name': 'entity.name.type.siteini'
      '3':
        'name': 'entity.name.function.siteini'
  }
  {
    #modifier after scrub
    'match': '\\.(scrub)\\s*\{\\s*(regex|multi|single|url)?'
    'captures':
      '1':
        'name': 'entity.name.type.siteini'
      '2':
        'name': 'entity.name.function.siteini'
  }
  {
    #modifier of .headers
    'match': '[\\{\\|](method|customheader|accept|referer|contenttype|postdata|host|credentials|allowautoredirect|expect)\\s*=(POST(_BACK)?|GET|REST|SOAP)?'
    'captures':
      '1':
        'name': 'entity.name.tag.siteini'
      '2':
        'name': 'entity.name.function.siteini'
  }
  {
    #modifier of .site (with =)
    'match': '[\\{\\|](compression|subtitlestype|loadcookie|episodesystem|ratingsystem|url|timezone|maxdays|cultureinfo|charset|(title)?matchfactor|firstday|firstshow|retry|skip|langoverrule|mdbinitype|searchsite)\\s*='
    'captures':
      '1':
        'name': 'entity.name.tag.siteini'

  }
  {
    # type=
    'match': '[\\s*\\(](type)=\\s*(string|char|word|sentence|paragraph|element|regex|run)'
    'captures':
      '1':
        'name': 'entity.name.tag.siteini'
