diff --git a/README.md b/README.md
index df31c37b..3b001885 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,10 @@
-# Domain list
+# Domain list community
 
-List of domains, driven by Project V community. This list will be used by Project V, mainly for routing purpose.
+This project manages a list of domains, to be used as geosites for routing purpose in Project V.
+
+## Purpose of this project
+
+This project contains only lists of domains. It is not opinionated, such as a domain should be blocked, or a domain should be proxied. This list can be used to generate routing rules on demand.
 
 ## Structure of data
 
@@ -9,7 +13,7 @@ All data are under `data/` directory. Each file in the directory represents a su
 ```
 # comments
 include:another-file
-domain:google.com
+domain:google.com @attr1 @att2
 keyword:google
 regex:www\.google\.com
 full:www.google.com
@@ -17,12 +21,13 @@ full:www.google.com
 
 Syntax:
 
-* Comments begins with `#`. It can start anywhere in the file. The content in the line after `#` is treated as comment and ignored in production.
+* Comments begins with `#`. It may begin anywhere in the file. The content in the line after `#` is treated as comment and ignored in production.
 * Inclusion begins with `include:`, followed by the file name of an existing file in the same directory.
 * Subdomain begins with `domain:`, followed by a valid domain name. The prefix `domain:` may be omitted.
 * Keyword begins with `keyword:`, followed by string.
 * Regular expression begins with `regex:`, followed by a valid regular expression (per Golang's standard).
 * Full domain begins with `full:`, followed by a domain.
+* Domains (including `domain`, `keyword`, `regext` and `full`) may have one or more attributes. Each attributes begin with `@` and followed by the name of the attribute.
 
 ## How it works
 
@@ -38,13 +43,15 @@ To generate a section:
 1. Generate each `regex:` line into a [regex domain routing rule](https://github.com/v2ray/v2ray-core/blob/master/app/router/config.proto#L19)
 1. Generate each `full:` line into a [full domain routing rule](https://github.com/v2ray/v2ray-core/blob/master/app/router/config.proto#L23)
 
-## File name guideline
+## How to orgnize domains
 
-* A name represents a deterministic group of domains, by common understanding.
-  * Good example: google, youtube, facebook
-  * Bad example: blocked, evil, domestic
-* A name may be divided into sub categories.
-  * Example: ads-cn, ads-us
+### File name
+
+Theoretically any string can be used as the name, as long as it is a valid file name. In practice, we prefer names for determinic group of domains, such as the owner (usually a company name) of the domains, e.g., "google", "netflex". Names with unclear scope are generally unrecommended, such as "evil", or "local".
+
+### Attributes
+
+Attribute is useful for sub-group of domains, especially for filtering purpose. For example, the list of "google" domains may contains its main domains, as well as domains that serve ads. The ads domains may be marked by attribute "@ads", and can be used as "geosite:google@ads" in V2Ray routing.
 
 ## Contribution guideline
 
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
new file mode 100644
index 00000000..12129b67
--- /dev/null
+++ b/azure-pipelines.yml
@@ -0,0 +1,30 @@
+jobs:
+- job: build_geosite
+  timeoutInMinutes: 30
+
+  pool:
+    vmImage: 'ubuntu-16.04'
+
+  variables:
+    GOPATH: '$(system.defaultWorkingDirectory)'
+
+  steps:
+  - checkout: none
+  - task: GoTool@0
+    inputs:
+      version: '1.11.2'
+  - script: |
+      go version
+      go get -v -t -d github.com/v2ray/domain-list-community/...
+      go run ./src/github.com/v2ray/domain-list-community/main.go
+    workingDirectory: '$(system.defaultWorkingDirectory)'
+    displayName: 'Generate'
+  - task: CopyFiles@2
+    inputs:
+      sourceFolder: '$(system.defaultworkingdirectory)'
+      contents: 'dlc.dat'
+      targetFolder: '$(build.artifactStagingDirectory)'
+  - task: PublishBuildArtifacts@1
+    displayName: 'Publish Artifact'
+    inputs:
+      PathtoPublish: '$(build.artifactstagingdirectory)'
diff --git a/data/alibaba b/data/alibaba
index 7a562bc1..165eb8f3 100644
--- a/data/alibaba
+++ b/data/alibaba
@@ -1,10 +1,12 @@
 alibaba.com
+alibabagroup.com
 alibabaplanet.com
 alicdn.com
 aliimg.com.com
 alipay.com
 alipayobjects.com
 aliyun.com
+aliyun-inc.com
 aliyuncdn.com
 aliyuncs.com
 
@@ -13,3 +15,18 @@ taobao.com
 taobaocdn.com
 tbcache.com
 tmall.com
+
+# Fliggy
+alitrip.com
+
+# amap
+amap.com
+amapauto.com
+autonavi.com
+gaode.com
+
+# Xiami music
+xiami.com
+xiami.net
+
+include:alibaba-ads
diff --git a/data/alibaba-ads b/data/alibaba-ads
index 231f2e27..90174fb9 100644
--- a/data/alibaba-ads
+++ b/data/alibaba-ads
@@ -1,84 +1,84 @@
-a.alimama.cn
-acjs.aliyun.com
-adash.m.taobao.com
-adashbc.m.taobao.com
-adash-c.ut.taobao.com
-adashx.m.taobao.com
-adashx4yt.m.taobao.com
-adashxgc.ut.taobao.com
-adsh.m.taobao.com
-afp.adchina.com
-afp.alicdn.com
-agoodm.m.taobao.com
-agoodm.wapa.taobao.com
-alipaylog.com
-amdc.alipay.com
-api.wapa.taobao.com
-api.waptest.taobao.com
-apoll.m.taobao.com
-appdownload.alicdn.com
-atanx.alicdn.com
-atanx2.alicdn.com
-cdn0.mobmore.com
-click.aliyun.com
-click.mz.simba.taobao.com
-cm.ipinyou.com
-cm.mlt01.com
-dsp.simba.taobao.com
-err.taobao.com
-ex.mobmore.com
-ex.puata.info
-fav.simba.taobao.com
-feedback.whalecloud.com
-ff.win.taobao.com
-fm.p0y.cn
-g.click.taobao.com
-g.tbcdn.cn
-gma.alicdn.com
-gtms01.alicdn.com
-gtms02.alicdn.com
-gtms03.alicdn.com
-gtms04.alicdn.com
-hydra.alibaba.com
-hz.pre.tbusergw.taobao.net
-hz.tbusergw.taobao.net
-i.ipinyou.com
-init.phpwind.com
-intl.wapa.taobao.com
-intl.waptest.taobao.com
-jxlog.istreamsche.com
-log.umtrack.com
-m.intl.taobao.com
-m.simba.taobao.com
-match.p4p.1688.com
-material.istreamsche.com
-mlt01.com
-nbsdk-baichuan.alicdn.com
-nbsdk-baichuan.taobao.com
-osfota.cdn.aliyun.com
-osupdate.aliyun.com
-osupdateservice.yunos.com
-pindao.huoban.taobao.com
-push.wandoujia.com
-re.m.taobao.com
-re.taobao.com
-redirect.simba.taobao.com
-rj.m.taobao.co
-rj.m.taobao.com
-sdkinit.taobao.com
-show.re.taobao.com
-simaba.taobao.com
-simba.m.taobao.com
-srd.simba.taobao.com
-stats.ipinyou.com
-strip.taobaocdn.com
-tanxlog.istreamsche.com
-tejia.taobao.com
-temai.taobao.com
-tns.simba.taobao.com
-tongji.linezing.com
-tvupgrade.yunos.com
-tyh.taobao.com
-userimg.qunar.com
-w.m.taobao.com
-yiliao.hupan.com
+a.alimama.cn @ads
+acjs.aliyun.com @ads
+adash.m.taobao.com @ads
+adashbc.m.taobao.com @ads
+adash-c.ut.taobao.com @ads
+adashx.m.taobao.com @ads
+adashx4yt.m.taobao.com @ads
+adashxgc.ut.taobao.com @ads
+adsh.m.taobao.com @ads
+afp.adchina.com @ads
+afp.alicdn.com @ads
+agoodm.m.taobao.com @ads
+agoodm.wapa.taobao.com @ads
+alipaylog.com @ads
+amdc.alipay.com @ads
+api.wapa.taobao.com @ads
+api.waptest.taobao.com @ads
+apoll.m.taobao.com @ads
+appdownload.alicdn.com @ads
+atanx.alicdn.com @ads
+atanx2.alicdn.com @ads
+cdn0.mobmore.com @ads
+click.aliyun.com @ads
+click.mz.simba.taobao.com @ads
+cm.ipinyou.com @ads
+cm.mlt01.com @ads
+dsp.simba.taobao.com @ads
+err.taobao.com @ads
+ex.mobmore.com @ads
+ex.puata.info @ads
+fav.simba.taobao.com @ads
+feedback.whalecloud.com @ads
+ff.win.taobao.com @ads
+fm.p0y.cn @ads
+g.click.taobao.com @ads
+g.tbcdn.cn @ads
+gma.alicdn.com @ads
+gtms01.alicdn.com @ads
+gtms02.alicdn.com @ads
+gtms03.alicdn.com @ads
+gtms04.alicdn.com @ads
+hydra.alibaba.com @ads
+hz.pre.tbusergw.taobao.net @ads
+hz.tbusergw.taobao.net @ads
+i.ipinyou.com @ads
+init.phpwind.com @ads
+intl.wapa.taobao.com @ads
+intl.waptest.taobao.com @ads
+jxlog.istreamsche.com @ads
+log.umtrack.com @ads
+m.intl.taobao.com @ads
+m.simba.taobao.com @ads
+match.p4p.1688.com @ads
+material.istreamsche.com @ads
+mlt01.com @ads
+nbsdk-baichuan.alicdn.com @ads
+nbsdk-baichuan.taobao.com @ads
+osfota.cdn.aliyun.com @ads
+osupdate.aliyun.com @ads
+osupdateservice.yunos.com @ads
+pindao.huoban.taobao.com @ads
+push.wandoujia.com @ads
+re.m.taobao.com @ads
+re.taobao.com @ads
+redirect.simba.taobao.com @ads
+rj.m.taobao.co @ads
+rj.m.taobao.com @ads
+sdkinit.taobao.com @ads
+show.re.taobao.com @ads
+simaba.taobao.com @ads
+simba.m.taobao.com @ads
+srd.simba.taobao.com @ads
+stats.ipinyou.com @ads
+strip.taobaocdn.com @ads
+tanxlog.istreamsche.com @ads
+tejia.taobao.com @ads
+temai.taobao.com @ads
+tns.simba.taobao.com @ads
+tongji.linezing.com @ads
+tvupgrade.yunos.com @ads
+tyh.taobao.com @ads
+userimg.qunar.com @ads
+w.m.taobao.com @ads
+yiliao.hupan.com @ads
diff --git a/data/amazon b/data/amazon
index c43edb01..aa36e772 100644
--- a/data/amazon
+++ b/data/amazon
@@ -7,6 +7,7 @@ amazon.co.jp
 amazon.jp
 
 # AWS
+amazonaws.com
 awsstatic.com
 cloudfront.net
 
diff --git a/data/apkpure b/data/apkpure
new file mode 100644
index 00000000..2abd57e9
--- /dev/null
+++ b/data/apkpure
@@ -0,0 +1,3 @@
+apkpure.com
+pureapk.com
+winudf.com
diff --git a/data/archive b/data/archive
new file mode 100644
index 00000000..6b56dd7d
--- /dev/null
+++ b/data/archive
@@ -0,0 +1 @@
+archive.org
diff --git a/data/baidu b/data/baidu
index 6a8876c5..e367c7fd 100644
--- a/data/baidu
+++ b/data/baidu
@@ -10,3 +10,5 @@ duapps.com
 quyaoya.com
 tiebaimg.com
 xiaodutv.com
+
+include:baidu-ads
diff --git a/data/baidu-ads b/data/baidu-ads
index 9e15bb68..7d4918bc 100644
--- a/data/baidu-ads
+++ b/data/baidu-ads
@@ -1,161 +1,161 @@
-a.baidu.com
-ad.duapps.com
-ad.player.baidu.com
-adm.baidu.com
-adscdn.baidu.com
-adx.xiaodutv.com
-ae.bdstatic.com
-afd.baidu.com
-als.baidu.com
-anquan.baidu.com
-antivirus.baidu.com
-api.cpu.baidu.com
-api.mobula.sdk.duapps.com
-api.tuisong.baidu.com
-appc.baidu.com
-b.bdstatic.com
-baichuan.baidu.com
-baidustatic.com
-baidutv.baidu.com
-banlv.baidu.com
-bar.baidu.com
-bce.baidu.com
-bdimg.share.baidu.com
-bdplus.baidu.com
-bj.bcebos.com
-btlaunch.baidu.com
-c.baidu.com
-cb.baidu.com
-cbjs.baidu.com
-cjhq.baidu.com
-cleaner.baidu.com
-click.bes.baidu.com
-click.hm.baidu.com
-click.qianqian.com
-cm.baichuan.baidu.com
-cm.baidu.com
-cm.pos.baidu.com
-cpro.baidu.cn
-cpro.baidu.com
-cpro.baidustatic.com
-cpro.tieba.baidu.com
-cpro.zhidao.baidu.com
-cpro2.baidu.com
-cpro2.baidustatic.com
-cpu.baidu.com
-cpu-admin.baidu.com
-crs.baidu.com
-datax.baidu.com
-dd713.bj.bcebos.com
-dl.client.baidu.com
-dl.ops.baidu.com
-dl1sw.baidu.com
-dl2.bav.baidu.com
-dlsw.baidu.com
-dlsw.br.baidu.com
-dl-vip.bav.baidu.com
-dl-vip.pcfaster.baidu.co.th
-download.bav.baidu.com
-download.sd.baidu.com
-drmcmm.baidu.com
-dup.baidustatic.com
-dxp.baidu.com
-dzl.baidu.com
-e.baidu.com
-eclick.baidu.com
-ecma.bdimg.com
-ecmb.bdimg.com
-ecmc.bdimg.com
-eiv.baidu.com
-em.baidu.com
-entry.baidu.com
-ers.baidu.com
-f10.baidu.com
-fc-feed.cdn.bcebos.com
-fclick.baidu.com
-feed.baidu.com
-fexclick.baidu.com
-g.baidu.com
-gimg.baidu.com
-guanjia.baidu.com
-hc.baidu.com
-hm.baidu.com
-hmma.baidu.com
-hpd.baidu.com
-idm.bce.baidu.com
-idm-su.baidu.com
-iebar.baidu.com
-ikcode.baidu.com
-img.taotaosou.cn
-img01.taotaosou.cn
-j.br.baidu.com
-kstj.baidu.com
-log.music.baidu.com
-m1.baidu.com
-ma.baidu.com
-mipcache.bdstatic.com
-mobads.baidu.com
-mobads-logs.baidu.com
-mpro.baidu.com
-msite.baidu.com
-neirong.baidu.com
-nsclick.baidu.com
-nsclickvideo.baidu.com
-openrcv.baidu.com
-pc.videoclick.baidu.com
-pos.baidu.com
-pups.bdimg.com
-push.zhanzhang.baidu.com
-qianclick.baidu.com
-release.baidu.com
-res.mi.baidu.com
-rigel.baidustatic.com
-river.zhidao.baidu.com
-rj.baidu.com
-rplog.baidu.com
-s.baidu.com
-s.cpro.baidu.com
-sa.tuisong.baidu.com
-sclick.baidu.com
-sestat.baidu.com
-shadu.baidu.com
-share.baidu.com
-snippet.pos.baidu.com
-sobar.baidu.com
-sobartop.baidu.com
-spcode.baidu.com
-stat.v.baidu.com
-su.bdimg.com
-su.bdstatic.com
-t10.baidu.com
-t11.baidu.com
-t12.baidu.com
-tk.baidu.com
-tkweb.baidu.com
-tob-cms.bj.bcebos.com
-tongji.baidu.com
-toolbar.baidu.com
-tracker.baidu.com
-tuijian.baidu.com
-uat1.bfsspadserver.8le8le.com
-ubmcmm.baidustatic.com
-ucstat.baidu.com
-ulic.baidu.com
-ulog.imap.baidu.com
-union.baidu.com
-unionimage.baidu.com
-utility.baidu.com
-utk.baidu.com
-videopush.baidu.com
-vv84.bj.bcebos.com
-w.gdown.baidu.com
-w.x.baidu.com
-wangmeng.baidu.com
-weishi.baidu.com
-wenku-cms.bj.bcebos.com
-wisepush.video.baidu.com
-wm.baidu.com
-wn.pos.baidu.com
-znsv.baidu.com
-zz.bdstatic.com
-zzy1.quyaoya.com
+a.baidu.com @ads
+ad.duapps.com @ads
+ad.player.baidu.com @ads
+adm.baidu.com @ads
+adscdn.baidu.com @ads
+adx.xiaodutv.com @ads
+ae.bdstatic.com @ads
+afd.baidu.com @ads
+als.baidu.com @ads
+anquan.baidu.com @ads
+antivirus.baidu.com @ads
+api.cpu.baidu.com @ads
+api.mobula.sdk.duapps.com @ads
+api.tuisong.baidu.com @ads
+appc.baidu.com @ads
+b.bdstatic.com @ads
+baichuan.baidu.com @ads
+baidustatic.com @ads
+baidutv.baidu.com @ads
+banlv.baidu.com @ads
+bar.baidu.com @ads
+bce.baidu.com @ads
+bdimg.share.baidu.com @ads
+bdplus.baidu.com @ads
+bj.bcebos.com @ads
+btlaunch.baidu.com @ads
+c.baidu.com @ads
+cb.baidu.com @ads
+cbjs.baidu.com @ads
+cjhq.baidu.com @ads
+cleaner.baidu.com @ads
+click.bes.baidu.com @ads
+click.hm.baidu.com @ads
+click.qianqian.com @ads
+cm.baichuan.baidu.com @ads
+cm.baidu.com @ads
+cm.pos.baidu.com @ads
+cpro.baidu.cn @ads
+cpro.baidu.com @ads
+cpro.baidustatic.com @ads
+cpro.tieba.baidu.com @ads
+cpro.zhidao.baidu.com @ads
+cpro2.baidu.com @ads
+cpro2.baidustatic.com @ads
+cpu.baidu.com @ads
+cpu-admin.baidu.com @ads
+crs.baidu.com @ads
+datax.baidu.com @ads
+dd713.bj.bcebos.com @ads
+dl.client.baidu.com @ads
+dl.ops.baidu.com @ads
+dl1sw.baidu.com @ads
+dl2.bav.baidu.com @ads
+dlsw.baidu.com @ads
+dlsw.br.baidu.com @ads
+dl-vip.bav.baidu.com @ads
+dl-vip.pcfaster.baidu.co.th @ads
+download.bav.baidu.com @ads
+download.sd.baidu.com @ads
+drmcmm.baidu.com @ads
+dup.baidustatic.com @ads
+dxp.baidu.com @ads
+dzl.baidu.com @ads
+e.baidu.com @ads
+eclick.baidu.com @ads
+ecma.bdimg.com @ads
+ecmb.bdimg.com @ads
+ecmc.bdimg.com @ads
+eiv.baidu.com @ads
+em.baidu.com @ads
+entry.baidu.com @ads
+ers.baidu.com @ads
+f10.baidu.com @ads
+fc-feed.cdn.bcebos.com @ads
+fclick.baidu.com @ads
+feed.baidu.com @ads
+fexclick.baidu.com @ads
+g.baidu.com @ads
+gimg.baidu.com @ads
+guanjia.baidu.com @ads
+hc.baidu.com @ads
+hm.baidu.com @ads
+hmma.baidu.com @ads
+hpd.baidu.com @ads
+idm.bce.baidu.com @ads
+idm-su.baidu.com @ads
+iebar.baidu.com @ads
+ikcode.baidu.com @ads
+img.taotaosou.cn @ads
+img01.taotaosou.cn @ads
+j.br.baidu.com @ads
+kstj.baidu.com @ads
+log.music.baidu.com @ads
+m1.baidu.com @ads
+ma.baidu.com @ads
+mipcache.bdstatic.com @ads
+mobads.baidu.com @ads
+mobads-logs.baidu.com @ads
+mpro.baidu.com @ads
+msite.baidu.com @ads
+neirong.baidu.com @ads
+nsclick.baidu.com @ads
+nsclickvideo.baidu.com @ads
+openrcv.baidu.com @ads
+pc.videoclick.baidu.com @ads
+pos.baidu.com @ads
+pups.bdimg.com @ads
+push.zhanzhang.baidu.com @ads
+qianclick.baidu.com @ads
+release.baidu.com @ads
+res.mi.baidu.com @ads
+rigel.baidustatic.com @ads
+river.zhidao.baidu.com @ads
+rj.baidu.com @ads
+rplog.baidu.com @ads
+s.baidu.com @ads
+s.cpro.baidu.com @ads
+sa.tuisong.baidu.com @ads
+sclick.baidu.com @ads
+sestat.baidu.com @ads
+shadu.baidu.com @ads
+share.baidu.com @ads
+snippet.pos.baidu.com @ads
+sobar.baidu.com @ads
+sobartop.baidu.com @ads
+spcode.baidu.com @ads
+stat.v.baidu.com @ads
+su.bdimg.com @ads
+su.bdstatic.com @ads
+t10.baidu.com @ads
+t11.baidu.com @ads
+t12.baidu.com @ads
+tk.baidu.com @ads
+tkweb.baidu.com @ads
+tob-cms.bj.bcebos.com @ads
+tongji.baidu.com @ads
+toolbar.baidu.com @ads
+tracker.baidu.com @ads
+tuijian.baidu.com @ads
+uat1.bfsspadserver.8le8le.com @ads
+ubmcmm.baidustatic.com @ads
+ucstat.baidu.com @ads
+ulic.baidu.com @ads
+ulog.imap.baidu.com @ads
+union.baidu.com @ads
+unionimage.baidu.com @ads
+utility.baidu.com @ads
+utk.baidu.com @ads
+videopush.baidu.com @ads
+vv84.bj.bcebos.com @ads
+w.gdown.baidu.com @ads
+w.x.baidu.com @ads
+wangmeng.baidu.com @ads
+weishi.baidu.com @ads
+wenku-cms.bj.bcebos.com @ads
+wisepush.video.baidu.com @ads
+wm.baidu.com @ads
+wn.pos.baidu.com @ads
+znsv.baidu.com @ads
+zz.bdstatic.com @ads
+zzy1.quyaoya.com @ads
diff --git a/data/bbc b/data/bbc
new file mode 100644
index 00000000..6e96041c
--- /dev/null
+++ b/data/bbc
@@ -0,0 +1,5 @@
+bbc.com
+bbc.co.uk
+bbci.co.uk
+crwdcntrl.net
+ib-ibi.com
diff --git a/data/bilibili b/data/bilibili
new file mode 100644
index 00000000..68e41804
--- /dev/null
+++ b/data/bilibili
@@ -0,0 +1,10 @@
+bilibili.com
+im9.com
+acg.tv
+hdslb.com
+biliapi.com
+biligame.net
+biligame.com
+biliapi.net
+mincdn.com
+b23.tv
diff --git a/data/bytedance b/data/bytedance
new file mode 100644
index 00000000..c979d167
--- /dev/null
+++ b/data/bytedance
@@ -0,0 +1,19 @@
+bytecdn.cn
+bytedance.com
+bytedns.net
+douyin.com
+huaxiong.com
+jokecommunity.com
+neihanshequ.com
+pstatp.com
+snssdk.com
+toutiao.com
+toutiaocdn.com
+toutiaocloud.com
+toutiaopage.com
+wukong.com
+
+#西瓜视频
+ixigua.com
+ixgvideo.com
+365yg.com
diff --git a/data/category-ads b/data/category-ads
new file mode 100644
index 00000000..feb0e79f
--- /dev/null
+++ b/data/category-ads
@@ -0,0 +1,15 @@
+# This file contains domains that clearly serving ads
+
+include:alibaba-ads
+include:baidu-ads
+include:google-ads
+include:hunantv-ads
+include:iqiyi-ads
+include:jd-ads
+include:letv-ads
+include:sina-ads
+include:youku-ads
+
+
+# Other domains for ads serving
+ad.wang502.com
diff --git a/data/cn b/data/cn
new file mode 100644
index 00000000..652373b7
--- /dev/null
+++ b/data/cn
@@ -0,0 +1,4 @@
+# This tag 'cn' is for backward compatibility of 'geosite:cn' in V2Ray.
+
+include:tld-cn
+include:geolocation-cn
diff --git a/data/discord b/data/discord
new file mode 100644
index 00000000..fbc17ccc
--- /dev/null
+++ b/data/discord
@@ -0,0 +1,3 @@
+discordapp.com
+discord.gg
+discordapp.net
diff --git a/data/douyu b/data/douyu
new file mode 100644
index 00000000..bb9ce9d8
--- /dev/null
+++ b/data/douyu
@@ -0,0 +1,3 @@
+douyu.tv
+douyu.com
+douyucdn.cn
diff --git a/data/dropbox b/data/dropbox
new file mode 100644
index 00000000..f24c8aba
--- /dev/null
+++ b/data/dropbox
@@ -0,0 +1,18 @@
+# List of all domains being operated by Dorpbox Inc.
+
+# Source: https://www.dropbox.com/en/help/security/official-domains
+db.tt
+dropbox.com
+dropboxapi.com
+dropboxusercontent.com
+dropboxbusiness.com
+dropboxforums.com
+dropboxforum.com
+dropboxinsiders.com
+dropboxmail.com
+dropboxpartners.com
+dropboxstatic.com
+dropbox.zendesk.com
+getdropbox.com
+paper.dropbox.com
+dropbox-dns.com
diff --git a/data/duckduckgo b/data/duckduckgo
new file mode 100644
index 00000000..e2cfe4ed
--- /dev/null
+++ b/data/duckduckgo
@@ -0,0 +1,2 @@
+duckduckgo.com
+duck.com
diff --git a/data/facebook b/data/facebook
index cab31bbd..f6b031b6 100644
--- a/data/facebook
+++ b/data/facebook
@@ -12,7 +12,6 @@ fb.me
 fbcdn.net
 fbsbx.com
 instagram.com
-instagram.com
 m.me
 messenger.com
 oculus.com
diff --git a/data/geolocation-!cn b/data/geolocation-!cn
new file mode 100644
index 00000000..cdf444cf
--- /dev/null
+++ b/data/geolocation-!cn
@@ -0,0 +1,26 @@
+# This list contains domains that don't have access point in China. This is opposite to geolocation-cn.
+
+include:adobe
+include:amazon
+include:dropbox
+include:duckduckgo
+include:ebay
+include:facebook
+include:github
+include:google
+include:jsdelivr
+include:line
+include:linkedin
+include:microsoft
+include:oracle
+include:pixiv
+include:reddit
+include:steam
+include:taboola
+include:telegram
+include:twitter
+include:ubi
+include:wikimedia
+include:xda
+include:xposed
+include:yandex
diff --git a/data/geolocation-cn b/data/geolocation-cn
index daffe42b..cef41778 100644
--- a/data/geolocation-cn
+++ b/data/geolocation-cn
@@ -2,11 +2,27 @@
 
 include:alibaba
 include:baidu
+include:bilibili
+include:bytedance
+include:douyu
+include:iqiyi
+include:jd
+include:jiemian
 include:netease
 include:qihoo360
+include:sina
 include:tencent
+include:tmtpost
+include:umeng
+include:unionpay
+include:xiaomi
+include:ynet
 include:zhihu
-imclude:xiaomi
+
+# CDNs
+
+ourdvsss.com # 网宿科技
+cdn.jsdelivr.net
 
 # The following domains are carried over from geosite:cn.
 # TODO: Decide how to deal with these domains
@@ -28,8 +44,6 @@ imclude:xiaomi
 3322.org
 35.com
 360doc.com
-360buy.com
-360buyimg.com
 360safe.com
 36kr.com
 39.net
@@ -76,7 +90,6 @@ baixing.net
 bankcomm.com
 bankofchina.com
 bcy.net
-bilibili.com
 cn.bing.com
 bitauto.com
 bitautoimg.com
@@ -146,6 +159,7 @@ duowan.com
 dxpmedia.com
 eastday.com
 ecitic.com
+edu.cn
 emarbox.com
 eoeandroid.com
 etao.com
@@ -158,6 +172,7 @@ geekpark.net
 geetest.com
 geilicdn.com
 getui.com
+gitee.com
 google-analytics.com
 growingio.com
 gtags.net
@@ -165,7 +180,6 @@ gwdang.com
 hao123.com
 hao123img.com
 haosou.com
-hdslb.com
 henha.com
 henkuai.com
 hexun.com
@@ -195,7 +209,6 @@ ip138.com
 ipinyou.com
 ipip.net
 ip-cdn.com
-iqiyi.com
 irs01.com
 it165.net
 it168.com
@@ -204,7 +217,6 @@ iteye.com
 ithome.com
 itjuzi.com
 jandan.net
-jd.com
 jb51.com
 jia.com
 jianshu.com
@@ -312,8 +324,6 @@ qiniu.com
 qiniucdn.com
 qiniudn.com
 qiniudns.com
-qiyi.com
-qiyipic.com
 qtmojo.com
 qunar.com
 qunarzz.com
@@ -362,8 +372,6 @@ tuniu.com
 tutuapp.com
 u17.com
 useso.com
-unionpay.com
-unionpaysecure.com
 upyun.com
 upaiyun.com
 v2ex.com
diff --git a/data/github b/data/github
index 4a1a5595..0c85a308 100644
--- a/data/github
+++ b/data/github
@@ -1,5 +1,6 @@
 github.com
-gist.github.com
+githubapp.com
+githubassets.com
 github.io
 githubusercontent.com
 git.io
diff --git a/data/google b/data/google
index 4fac9221..08454345 100644
--- a/data/google
+++ b/data/google
@@ -204,6 +204,7 @@ adsense.com
 adwords.com
 abc.xyz
 android.com
+appspot.com
 blogger.com
 blogspot.com
 chromium.org
@@ -244,7 +245,6 @@ ggoogle.com
 gogole.com
 goolge.com
 googel.com
-duck.com
 googlee.com
 googil.com
 googlr.com
@@ -253,6 +253,7 @@ gmodules.com
 googleadservices.com
 googleapps.com
 googleapis.com
+googleapis.cn
 goo.gl
 googlebot.com
 googlecommerce.com
@@ -263,9 +264,10 @@ withgoogle.com
 1e100.net
 ggpht.com
 googleusercontent.com
-googlecapital.com	
+googlecapital.com
 gv.com
 golang.org
 gstatic.com
 
 include:youtube
+include:google-ads
diff --git a/data/google-ads b/data/google-ads
new file mode 100644
index 00000000..25c4c4d3
--- /dev/null
+++ b/data/google-ads
@@ -0,0 +1,2 @@
+doubleclick.net @ads
+googlesyndication.com @ads
diff --git a/data/hunantv-ads b/data/hunantv-ads
index 98f546d3..5add6bc5 100644
--- a/data/hunantv-ads
+++ b/data/hunantv-ads
@@ -1,7 +1,7 @@
-click.hunantv.com
-da.hunantv.com
-da.mgtv.com
-log.hunantv.com
-log.v2.hunantv.com
-res.hunantv.com
-v2.log.hunantv.com
+click.hunantv.com @ads
+da.hunantv.com @ads
+da.mgtv.com @ads
+log.hunantv.com @ads
+log.v2.hunantv.com @ads
+res.hunantv.com @ads
+v2.log.hunantv.com @ads
diff --git a/data/iqiyi b/data/iqiyi
new file mode 100644
index 00000000..9c75d473
--- /dev/null
+++ b/data/iqiyi
@@ -0,0 +1,3 @@
+qiyi.com
+qiyipic.com
+iqiyi.com
\ No newline at end of file
diff --git a/data/iqiyi-ads b/data/iqiyi-ads
index 2a3ece6d..1ed2333a 100644
--- a/data/iqiyi-ads
+++ b/data/iqiyi-ads
@@ -1,17 +1,17 @@
-a.ckm.iqiyi.com
-ad.m.iqiyi.com
-afp.iqiyi.com
-c.uaa.iqiyi.com
-cloudpush.iqiyi.com
-cm.passport.iqiyi.com
-cupid.iqiyi.com
-emoticon.sns.iqiyi.com
-gamecenter.iqiyi.com
-hotchat-im.iqiyi.com
-ifacelog.iqiyi.com
-mbdlog.iqiyi.com
-msg.71.am
-msg.video.qiyi.com
-msg2.video.qiyi.com
-policy.video.iqiyi.com
-yuedu.iqiyi.com
+a.ckm.iqiyi.com @ads
+ad.m.iqiyi.com @ads
+afp.iqiyi.com @ads
+c.uaa.iqiyi.com @ads
+cloudpush.iqiyi.com @ads
+cm.passport.iqiyi.com @ads
+cupid.iqiyi.com @ads
+emoticon.sns.iqiyi.com @ads
+gamecenter.iqiyi.com @ads
+hotchat-im.iqiyi.com @ads
+ifacelog.iqiyi.com @ads
+mbdlog.iqiyi.com @ads
+msg.71.am @ads
+msg.video.qiyi.com @ads
+msg2.video.qiyi.com @ads
+policy.video.iqiyi.com @ads
+yuedu.iqiyi.com @ads
diff --git a/data/jd b/data/jd
new file mode 100644
index 00000000..e0725af5
--- /dev/null
+++ b/data/jd
@@ -0,0 +1,37 @@
+360buy.com
+360buyimg.com
+360top.com
+blackdragon.com
+dao123.com
+jcloud-cdn.com
+jcloud-live.com
+jcloud-oss.com
+jcloud.com
+jclouddn.com
+jcloudec.com
+jcloudlb.com
+jcloudlive.com
+jcloudlv.com
+jcloudoss.com
+jcloudss.com
+jcloudstatic.com
+jcloudvideo.com
+jclps.com
+jd-app.com
+jd-ex.com
+jd.cn
+jd.com
+jdcache.com
+jdcloud.com
+jddapeigou.com
+joybuy.com
+mayshijia.com
+minitiao.com
+paidaojia.cn
+prestodb-china.com
+qianxun.com
+toplife.com
+vg.com
+wdfok.com
+
+include:jd-ads
\ No newline at end of file
diff --git a/data/jd-ads b/data/jd-ads
index 715ffc8d..4af18429 100644
--- a/data/jd-ads
+++ b/data/jd-ads
@@ -1,6 +1,6 @@
-ads.union.jd.com
-c-nfa.jd.com
-cps.360buy.com
-jzt.jd.com
-stat.m.jd.com
-img-x.jd.com
+ads.union.jd.com @ads
+c-nfa.jd.com @ads
+cps.360buy.com @ads
+jzt.jd.com @ads
+stat.m.jd.com @ads
+img-x.jd.com @ads
diff --git a/data/jiemian b/data/jiemian
new file mode 100644
index 00000000..9bf3fb8e
--- /dev/null
+++ b/data/jiemian
@@ -0,0 +1,4 @@
+# 界面(上海)网络科技有限公司 (沪ICP备14040942号)
+
+jiemian.com
+jiemian.com.cn
diff --git a/data/jsdelivr b/data/jsdelivr
new file mode 100644
index 00000000..2d638224
--- /dev/null
+++ b/data/jsdelivr
@@ -0,0 +1,2 @@
+jsdelivr.net
+jsdelivr.com
diff --git a/data/letv-ads b/data/letv-ads
index 6ba8654c..5b76d4c5 100644
--- a/data/letv-ads
+++ b/data/letv-ads
@@ -1,15 +1,15 @@
-api.game.letvstore.com
-ark.letv.com
-dc.letv.com
-dev.dc.letv.com
-fz.letv.com
-g3.letv.com
-letv.allyes.com
-minisite.letv.com
-msg.m.letv.com
-n.mark.letv.com
-plog.dc.letv.com
-pro.hoye.letv.com
-pro.letv.com
-stat.letv.com
-static.app.m.letv.com
+api.game.letvstore.com @ads
+ark.letv.com @ads
+dc.letv.com @ads
+dev.dc.letv.com @ads
+fz.letv.com @ads
+g3.letv.com @ads
+letv.allyes.com @ads
+minisite.letv.com @ads
+msg.m.letv.com @ads
+n.mark.letv.com @ads
+plog.dc.letv.com @ads
+pro.hoye.letv.com @ads
+pro.letv.com @ads
+stat.letv.com @ads
+static.app.m.letv.com @ads
diff --git a/data/microsoft b/data/microsoft
index 010e618a..8b8a8964 100644
--- a/data/microsoft
+++ b/data/microsoft
@@ -17,3 +17,5 @@ azure.com
 office.com
 xbox.com
 visualstudio.com
+
+domain:microsofttranslator.com
diff --git a/data/nytimes b/data/nytimes
new file mode 100644
index 00000000..391cffe2
--- /dev/null
+++ b/data/nytimes
@@ -0,0 +1,6 @@
+nytimes.com
+nytcn.me
+sxzhchina.com
+tynt.com
+nytstyle.com
+nyt.com
diff --git a/data/pixiv b/data/pixiv
new file mode 100644
index 00000000..c615129e
--- /dev/null
+++ b/data/pixiv
@@ -0,0 +1,4 @@
+pixiv.net
+pixiv.org
+pixiv.co.jp
+pximg.net
diff --git a/data/rfa b/data/rfa
new file mode 100644
index 00000000..fe4a4543
--- /dev/null
+++ b/data/rfa
@@ -0,0 +1 @@
+rfa.org
diff --git a/data/sina b/data/sina
index 5946405b..efe6da91 100644
--- a/data/sina
+++ b/data/sina
@@ -1,10 +1,13 @@
 sina.com
 sinaimg.cn
 sina.com.cn
-weibo.com
 sinajs.cn
 sina.cn
 sinaapp.com
 sinaedge.com
 sinaimg.com
-sinajs.com
\ No newline at end of file
+sinajs.com
+weibo.com
+weibo.com.cn
+
+include:sina-ads
diff --git a/data/sina-ads b/data/sina-ads
index f513f97a..19bc6dc2 100644
--- a/data/sina-ads
+++ b/data/sina-ads
@@ -1,84 +1,84 @@
-2016.sina.cn
-ad.sina.com.cn
-adbox.sina.com.cn
-adimages.sina.com.hk
-adimg.mobile.sina.cn
-adimg.uve.weibo.com
-adm.leju.sina.com.cn
-ads.sina.com
-alitui.weibo.com
-api.apps.sina.cn
-appgift.sinaapp.com
-appsupdate.sinaapp.com
-atm.sina.com
-beacon.sina.com.cn
-biz.weibo.com
-c.biz.weibo.com
-c.wcpt.biz.weibo.com
-click.uve.mobile.sina.cn
-click.uve.weibo.com
-cm.dmp.sina.cn
-contentrecommend-out.mobile.sina.cn
-count.video.sina.com.cn
-counter.sina.com.cn
-cre.dp.sina.cn
-cre.mix.sina.com.cn
-cre-dp.sina.cn
-d00.sina.com.cn
-dcads.sina.com.cn
-dl.kjava.sina.cn
-dmp.sina.cn
-dp.im.weibo.cn
-game.weibo.cn
-game.weibo.com
-gw5.push.mcp.weibo.cn
-gw6.push.mcp.weibo.cn
-img.adbox.sina.com.cn
-img.amp.ad.sina.com.cn
-int.dpool.sina.com.cn
-interest.mix.sina.com.cn
-log.interest.mix.sina.com.cn
-log.mix.sina.com.cn
-log.sina.cn
-m.beacon.sina.com.cn
-m.game.weibo.cn
-mg.games.sina.com.cn
-motu.p4p.sina.com.cn
-newspush.sinajs.cn
-oascentral.sina.com
-oascentral.sina.com.hk
-p4p.sina.com.cn
-palmnews.sina.cn
-pay.mobile.sina.cn
-pfp.sina.com.cn
-pfpip.sina.com
-promote.biz.weibo.cn
-r.dmp.sina.cn
-rm.sina.com.cn
-rs.sinajs.cn
-s.alitui.weibo.com
-s.img.mix.sina.com.cn
-sapi.sina.cn
-sax.sina.cn
-sax.sina.com.cn
-saxn.sina.com.cn
-saxs.sina.com.cn
-sbeacon.sina.com.cn
-sdkapp.mobile.sina.cn
-sdkapp.uve.weibo.com
-sdkclick.mobile.sina.cn
-slog.sina.cn
-slog.sina.com.cn
-staticadm.leju.sina.com.cn
-tjs.sjs.sinajs.cn
-trends.mobile.sina.cn
-u1.img.mobile.sina.cn
-wapwbclick.mobile.sina.cn
-wbapp.mobile.sina.cn
-wbapp.uve.weibo.com
-wbclick.mobile.sina.cn
-wbpctips.mobile.sina.cn
-widget.weibo.com
-woocall.sina.com.cn
-zc.biz.weibo.com
-zymo.mps.weibo.com
+2016.sina.cn @ads
+ad.sina.com.cn @ads
+adbox.sina.com.cn @ads
+adimages.sina.com.hk @ads
+adimg.mobile.sina.cn @ads
+adimg.uve.weibo.com @ads
+adm.leju.sina.com.cn @ads
+ads.sina.com @ads
+alitui.weibo.com @ads
+api.apps.sina.cn @ads
+appgift.sinaapp.com @ads
+appsupdate.sinaapp.com @ads
+atm.sina.com @ads
+beacon.sina.com.cn @ads
+biz.weibo.com @ads
+c.biz.weibo.com @ads
+c.wcpt.biz.weibo.com @ads
+click.uve.mobile.sina.cn @ads
+click.uve.weibo.com @ads
+cm.dmp.sina.cn @ads
+contentrecommend-out.mobile.sina.cn @ads
+count.video.sina.com.cn @ads
+counter.sina.com.cn @ads
+cre.dp.sina.cn @ads
+cre.mix.sina.com.cn @ads
+cre-dp.sina.cn @ads
+d00.sina.com.cn @ads
+dcads.sina.com.cn @ads
+dl.kjava.sina.cn @ads
+dmp.sina.cn @ads
+dp.im.weibo.cn @ads
+game.weibo.cn @ads
+game.weibo.com @ads
+gw5.push.mcp.weibo.cn @ads
+gw6.push.mcp.weibo.cn @ads
+img.adbox.sina.com.cn @ads
+img.amp.ad.sina.com.cn @ads
+int.dpool.sina.com.cn @ads
+interest.mix.sina.com.cn @ads
+log.interest.mix.sina.com.cn @ads
+log.mix.sina.com.cn @ads
+log.sina.cn @ads
+m.beacon.sina.com.cn @ads
+m.game.weibo.cn @ads
+mg.games.sina.com.cn @ads
+motu.p4p.sina.com.cn @ads
+newspush.sinajs.cn @ads
+oascentral.sina.com @ads
+oascentral.sina.com.hk @ads
+p4p.sina.com.cn @ads
+palmnews.sina.cn @ads
+pay.mobile.sina.cn @ads
+pfp.sina.com.cn @ads
+pfpip.sina.com @ads
+promote.biz.weibo.cn @ads
+r.dmp.sina.cn @ads
+rm.sina.com.cn @ads
+rs.sinajs.cn @ads
+s.alitui.weibo.com @ads
+s.img.mix.sina.com.cn @ads
+sapi.sina.cn @ads
+sax.sina.cn @ads
+sax.sina.com.cn @ads
+saxn.sina.com.cn @ads
+saxs.sina.com.cn @ads
+sbeacon.sina.com.cn @ads
+sdkapp.mobile.sina.cn @ads
+sdkapp.uve.weibo.com @ads
+sdkclick.mobile.sina.cn @ads
+slog.sina.cn @ads
+slog.sina.com.cn @ads
+staticadm.leju.sina.com.cn @ads
+tjs.sjs.sinajs.cn @ads
+trends.mobile.sina.cn @ads
+u1.img.mobile.sina.cn @ads
+wapwbclick.mobile.sina.cn @ads
+wbapp.mobile.sina.cn @ads
+wbapp.uve.weibo.com @ads
+wbclick.mobile.sina.cn @ads
+wbpctips.mobile.sina.cn @ads
+widget.weibo.com @ads
+woocall.sina.com.cn @ads
+zc.biz.weibo.com @ads
+zymo.mps.weibo.com @ads
diff --git a/data/sohu-ads b/data/sohu-ads
index 7e23a0ce..4b0ee1d0 100644
--- a/data/sohu-ads
+++ b/data/sohu-ads
@@ -1,14 +1,14 @@
-adnet.sohu.com
-ads.sohu.com
-aty.sohu.com
-data.vod.itc.cn
-epro.sogou.com
-go.sohu.com
-golden1.sogou.com
-imp.optaim.com
-inte.sogou.com
-inte.sogoucdn.com
-lu.sogoucdn.com
-theta.sogoucdn.com
-uranus.sogou.com
-v2.reachmax.cn
+adnet.sohu.com @ads
+ads.sohu.com @ads
+aty.sohu.com @ads
+data.vod.itc.cn @ads
+epro.sogou.com @ads
+go.sohu.com @ads
+golden1.sogou.com @ads
+imp.optaim.com @ads
+inte.sogou.com @ads
+inte.sogoucdn.com @ads
+lu.sogoucdn.com @ads
+theta.sogoucdn.com @ads
+uranus.sogou.com @ads
+v2.reachmax.cn @ads
diff --git a/data/soundcloud b/data/soundcloud
new file mode 100644
index 00000000..cb5ef02c
--- /dev/null
+++ b/data/soundcloud
@@ -0,0 +1,2 @@
+soundcloud.com
+sndcdn.com
diff --git a/data/speedtest b/data/speedtest
new file mode 100644
index 00000000..af3aa87a
--- /dev/null
+++ b/data/speedtest
@@ -0,0 +1,3 @@
+# This tag 'speedtest' is for backward compatibility of 'geosite:speedtest' in V2Ray.
+
+include:ookla-speedtest
diff --git a/data/startpage b/data/startpage
new file mode 100644
index 00000000..99bfa121
--- /dev/null
+++ b/data/startpage
@@ -0,0 +1,2 @@
+startpage.com
+ixquick.com
diff --git a/data/taboola b/data/taboola
new file mode 100644
index 00000000..f00ef5ea
--- /dev/null
+++ b/data/taboola
@@ -0,0 +1,4 @@
+# Taboola uses this single domain for both official website and ads serving. 
+# Blocking the following domain will prevent taboola ads from displaying,
+# but also cut the connection to Taboola website.
+taboola.com
diff --git a/data/telegram b/data/telegram
index 285fa17c..d169b07d 100644
--- a/data/telegram
+++ b/data/telegram
@@ -1,2 +1,6 @@
-telegram.org
+stel.com
 t.me
+tdesktop.com
+telegra.ph
+telegram.me
+telegram.org
diff --git a/data/tmtpost b/data/tmtpost
new file mode 100644
index 00000000..a4a3fc8c
--- /dev/null
+++ b/data/tmtpost
@@ -0,0 +1,10 @@
+# Domains belong to 北京灵动新程信息科技有限公司 (京ICP备13040123号)
+
+tmtpost.com
+chaindd.com
+72whys.com
+checkzeit.com
+tivitv.com
+tigeek.net.cn
+tmtsmartlife.com
+tmtsmartrun.com
diff --git a/data/tumblr b/data/tumblr
new file mode 100644
index 00000000..0dff8929
--- /dev/null
+++ b/data/tumblr
@@ -0,0 +1 @@
+tumblr.com
diff --git a/data/twitter b/data/twitter
index ecb4ba53..91709f77 100644
--- a/data/twitter
+++ b/data/twitter
@@ -1,10 +1,14 @@
+ads-twitter.com
 periscope.tv
 pscp.tv
 t.co
+tellapart.com
 tweetdeck.com
 twimg.com
 twitpic.com
 twitter.com
+twitteroauth.com
+twitterstat.us
 twitter.jp
 vine.co
 twtrdns.net
diff --git a/data/ubi b/data/ubi
new file mode 100644
index 00000000..9df9caf1
--- /dev/null
+++ b/data/ubi
@@ -0,0 +1,3 @@
+ubi.com
+ubisoft.com
+uplay.com
diff --git a/data/umeng b/data/umeng
new file mode 100644
index 00000000..e7d1403b
--- /dev/null
+++ b/data/umeng
@@ -0,0 +1,7 @@
+umeng.com
+whalecloud.com
+umtrack.com
+umsns.com
+uyunad.com
+umengcloud.com
+mobmore.com
diff --git a/data/unionpay b/data/unionpay
new file mode 100644
index 00000000..8150b426
--- /dev/null
+++ b/data/unionpay
@@ -0,0 +1,4 @@
+95516.com
+unionpay.com
+unionpayintl.com
+unionpaysecure.com
diff --git a/data/v2ray b/data/v2ray
new file mode 100644
index 00000000..4fac3797
--- /dev/null
+++ b/data/v2ray
@@ -0,0 +1 @@
+v2ray.com
diff --git a/data/vimeo b/data/vimeo
new file mode 100644
index 00000000..1946b6df
--- /dev/null
+++ b/data/vimeo
@@ -0,0 +1,2 @@
+vimeo.com
+vimeocdn.com
diff --git a/data/voanews b/data/voanews
new file mode 100644
index 00000000..ba9166da
--- /dev/null
+++ b/data/voanews
@@ -0,0 +1,3 @@
+tiqcdn.com
+voachinese.com
+voanews.com
diff --git a/data/xda b/data/xda
new file mode 100644
index 00000000..49f37312
--- /dev/null
+++ b/data/xda
@@ -0,0 +1,2 @@
+xda-developers.com
+xda-cdn.com
diff --git a/data/xposed b/data/xposed
new file mode 100644
index 00000000..208e66a7
--- /dev/null
+++ b/data/xposed
@@ -0,0 +1 @@
+xposed.info
diff --git a/data/ynet b/data/ynet
new file mode 100644
index 00000000..7f254269
--- /dev/null
+++ b/data/ynet
@@ -0,0 +1,6 @@
+# This file includes domains for 北京青年报网际传播技术有限公司 (京ICP证010639号-4)
+
+ynet.com.cn
+ynet.com
+0880.com
+ynet.cn
diff --git a/data/youku-ads b/data/youku-ads
index bde53bba..013dd99c 100644
--- a/data/youku-ads
+++ b/data/youku-ads
@@ -1,47 +1,47 @@
-actives.youku.com
-ad.api.3g.youku.com
-ad.api.mobile.youku.com
-ad.mobile.youku.com
-a-dxk.play.api.3g.youku.com
-atm.youku.com
-b.smartvideo.youku.com
-c.yes.youku.com
-das.api.youku.com
-das.mobile.youku.com
-dev-push.m.youku.com
-dl.g.youku.com
-dmapp.youku.com
-e.stat.ykimg.com
-gamex.mobile.youku.com
-guanggaoad.youku.com
-hudong.pl.youku.com
-huodong.pl.youku.com
-huodong.vip.youku.com
-hz.youku.com
-iyes.youku.com
-l.ykimg.com
-lstat.youku.com
-mobilemsg.youku.com
-msg.youku.com
-myes.youku.com
-p.l.youku.com
-pl.youku.com
-passport-log.youku.com
-p-log.ykimg.com
-push.m.youku.com
-r.l.youku.com
-s.p.youku.com
-sdk.m.youku.com
-stat.youku.com
-statis.api.3g.youku.com
-store.tv.api.3g.youku.com
-store.xl.api.3g.youku.com
-tdrec.youku.com
-test.ott.youku.com
-test.sdk.m.youku.com
-v.l.youku.com
-val.api.youku.com
-vali.cp31.ott.cibntv.net
-wan.youku.com
-ykatr.youku.com
-ykrec.youku.com
+actives.youku.com @ads
+ad.api.3g.youku.com @ads
+ad.api.mobile.youku.com @ads
+ad.mobile.youku.com @ads
+a-dxk.play.api.3g.youku.com @ads
+atm.youku.com @ads
+b.smartvideo.youku.com @ads
+c.yes.youku.com @ads
+das.api.youku.com @ads
+das.mobile.youku.com @ads
+dev-push.m.youku.com @ads
+dl.g.youku.com @ads
+dmapp.youku.com @ads
+e.stat.ykimg.com @ads
+gamex.mobile.youku.com @ads
+guanggaoad.youku.com @ads
+hudong.pl.youku.com @ads
+huodong.pl.youku.com @ads
+huodong.vip.youku.com @ads
+hz.youku.com @ads
+iyes.youku.com @ads
+l.ykimg.com @ads
+lstat.youku.com @ads
+mobilemsg.youku.com @ads
+msg.youku.com @ads
+myes.youku.com @ads
+p.l.youku.com @ads
+pl.youku.com @ads
+passport-log.youku.com @ads
+p-log.ykimg.com @ads
+push.m.youku.com @ads
+r.l.youku.com @ads
+s.p.youku.com @ads
+sdk.m.youku.com @ads
+stat.youku.com @ads
+statis.api.3g.youku.com @ads
+store.tv.api.3g.youku.com @ads
+store.xl.api.3g.youku.com @ads
+tdrec.youku.com @ads
+test.ott.youku.com @ads
+test.sdk.m.youku.com @ads
+v.l.youku.com @ads
+val.api.youku.com @ads
+vali.cp31.ott.cibntv.net @ads
+wan.youku.com @ads
+ykatr.youku.com @ads
+ykrec.youku.com @ads
diff --git a/main.go b/main.go
index ad709033..acc3ca4b 100644
--- a/main.go
+++ b/main.go
@@ -7,6 +7,7 @@ import (
 	"io/ioutil"
 	"os"
 	"path/filepath"
+	"strconv"
 	"strings"
 
 	"github.com/gogo/protobuf/proto"
@@ -16,6 +17,7 @@ import (
 type Entry struct {
 	Type  string
 	Value string
+	Attrs []*router.Domain_Attribute
 }
 
 type List struct {
@@ -37,23 +39,27 @@ func (l *ParsedList) toProto() (*router.GeoSite, error) {
 		switch entry.Type {
 		case "domain":
 			site.Domain = append(site.Domain, &router.Domain{
-				Type:  router.Domain_Domain,
-				Value: entry.Value,
+				Type:      router.Domain_Domain,
+				Value:     entry.Value,
+				Attribute: entry.Attrs,
 			})
 		case "regex":
 			site.Domain = append(site.Domain, &router.Domain{
-				Type:  router.Domain_Regex,
-				Value: entry.Value,
+				Type:      router.Domain_Regex,
+				Value:     entry.Value,
+				Attribute: entry.Attrs,
 			})
 		case "keyword":
 			site.Domain = append(site.Domain, &router.Domain{
-				Type:  router.Domain_Plain,
-				Value: entry.Value,
+				Type:      router.Domain_Plain,
+				Value:     entry.Value,
+				Attribute: entry.Attrs,
 			})
 		case "full":
 			site.Domain = append(site.Domain, &router.Domain{
-				Type:  router.Domain_Full,
-				Value: entry.Value,
+				Type:      router.Domain_Full,
+				Value:     entry.Value,
+				Attribute: entry.Attrs,
 			})
 		default:
 			return nil, errors.New("unknown domain type: " + entry.Type)
@@ -70,21 +76,67 @@ func removeComment(line string) string {
 	return strings.TrimSpace(line[:idx])
 }
 
-func parseEntry(line string) (Entry, error) {
-	kv := strings.Split(line, ":")
+func parseDomain(domain string, entry *Entry) error {
+	kv := strings.Split(domain, ":")
 	if len(kv) == 1 {
-		return Entry{
-			Type:  "domain",
-			Value: kv[0],
-		}, nil
+		entry.Type = "domain"
+		entry.Value = strings.ToLower(kv[0])
+		return nil
 	}
+
 	if len(kv) == 2 {
-		return Entry{
-			Type:  strings.ToLower(kv[0]),
-			Value: strings.ToLower(kv[1]),
-		}, nil
+		entry.Type = strings.ToLower(kv[0])
+		entry.Value = strings.ToLower(kv[1])
+		return nil
 	}
-	return Entry{}, errors.New("Invalid format: " + line)
+
+	return errors.New("Invalid format: " + domain)
+}
+
+func parseAttribute(attr string) (router.Domain_Attribute, error) {
+	var attribute router.Domain_Attribute
+	if len(attr) == 0 || attr[0] != '@' {
+		return attribute, errors.New("invalid attribute: " + attr)
+	}
+
+	attr = attr[0:]
+	parts := strings.Split(attr, "=")
+	if len(parts) == 1 {
+		attribute.Key = strings.ToLower(parts[0])
+		attribute.TypedValue = &router.Domain_Attribute_BoolValue{BoolValue: true}
+	} else {
+		attribute.Key = strings.ToLower(parts[0])
+		intv, err := strconv.Atoi(parts[1])
+		if err != nil {
+			return attribute, errors.New("invalid attribute: " + attr + ": " + err.Error())
+		}
+		attribute.TypedValue = &router.Domain_Attribute_IntValue{IntValue: int64(intv)}
+	}
+	return attribute, nil
+}
+
+func parseEntry(line string) (Entry, error) {
+	line = strings.TrimSpace(line)
+	parts := strings.Split(line, " ")
+
+	var entry Entry
+	if len(parts) == 0 {
+		return entry, errors.New("empty entry")
+	}
+
+	if err := parseDomain(parts[0], &entry); err != nil {
+		return entry, err
+	}
+
+	for i := 1; i < len(parts); i++ {
+		attr, err := parseAttribute(parts[i])
+		if err != nil {
+			return entry, err
+		}
+		entry.Attrs = append(entry.Attrs, &attr)
+	}
+
+	return entry, nil
 }
 
 func DetectPath(path string) (string, error) {