diff --git a/README.md b/README.md
index 9d98257..714e5ae 100644
--- a/README.md
+++ b/README.md
@@ -1,291 +1,80 @@
-
tun2socks
-A tun2socks powered by gVisor TCP/IP stack.
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+[![GitHub Workflow][1]](https://github.com/xjasonlyu/tun2socks/actions)
+[![Go Version][2]](https://github.com/xjasonlyu/tun2socks/blob/main/go.mod)
+[![Go Report][3]](https://goreportcard.com/badge/github.com/xjasonlyu/tun2socks)
+[![GitHub License][4]](https://github.com/xjasonlyu/tun2socks/blob/main/LICENSE)
+[![Releases][5]](https://github.com/xjasonlyu/tun2socks/releases)
+
+[1]: https://img.shields.io/github/workflow/status/xjasonlyu/tun2socks/Go/master?style=flat-square
+[2]: https://img.shields.io/github/go-mod/go-version/xjasonlyu/tun2socks?style=flat-square
+[3]: https://goreportcard.com/badge/github.com/xjasonlyu/tun2socks?style=flat-square
+[4]: https://img.shields.io/github/license/xjasonlyu/tun2socks?style=flat-square
+[5]: https://img.shields.io/github/v/release/xjasonlyu/tun2socks?include_prereleases&style=flat-square
+
+[简体中文](README_ZH.md)
## Features
-- ICMP echoing
-- IPv6 support
+- ICMP echoing / IPv6 support / Socks5 & SS proxy
- Optimized UDP transmission for game acceleration
- Pure Go implementation, no more CGO required
- Router mode, routing all the traffic in LAN
-- Socks5, Shadowsocks protocol support for remote connections
- TCP/IP stack powered by [gVisor](https://github.com/google/gvisor)
-- Up to 2.5Gbps throughput (10x faster than [v1](https://github.com/xjasonlyu/tun2socks/tree/v1))
+- More than 2.5Gbps throughput (10x faster than [v1](https://github.com/xjasonlyu/tun2socks/tree/v1))
## Requirements
| Target | Minimum | Recommended |
| :----- | :-----: | :---------: |
-| System | linux darwin freebsd openbsd | linux |
+| System | Linux MacOS Freebsd OpenBSD Windows | Linux MacOS |
| Memory | >20MB | >128MB |
-| CPU | amd64 arm64 | amd64 |
+| CPU | AMD64(x86_64) ARM64 | AMD64 with AES-NI & AVX2 |
-## Performance
+## Documentation
-> iPerf3 tested on Debian 10 with i5-10500, 8G RAM
+Documentations and quick start guides can be found at [Github Wiki](https://github.com/xjasonlyu/tun2socks/wiki).
-## How to Build
+## Building from source
-### build from source code
+Due to tun2socks based on gVisor, so only x86_64 and ARM64 was supported for now. Other architectures may become available in the future.
-Go compiler version >= 1.15 is required
+### Dependencies
-```text
-$ git clone https://github.com/xjasonlyu/tun2socks.git
-$ cd tun2socks
-$ make
+Make sure the following dependencies are installed:
+
+- Go 1.15+
+
+### Building
+
+Build and install the `tun2socks` binary:
+
+```shell
+make tun2socks
+sudo cp ./bin/tun2socks /usr/local/bin
```
-### build docker image
+Build for all architectures:
-```text
-$ docker build -t tun2socks .
+```shell
+make all-arch
```
-or
-
-```text
-$ docker build -t tun2socks -f .Dockerfile.aarch64 .
-```
-
-## QuickStart
-
-Download from precompiled [Releases](https://github.com/xjasonlyu/tun2socks/releases).
-
-
- With Docker
-
-> Since Go 1.12, the runtime now uses MADV_FREE to release unused memory on **linux**. This is more efficient but may result in higher reported RSS. The kernel will reclaim the unused data when it is needed. To revert to the Go 1.11 behavior (MADV_DONTNEED), set the environment variable GODEBUG=madvdontneed=1.
-
-### create docker network (macvlan mode)
-
-```shell script
-docker network create -d macvlan \
- --subnet=172.20.1.0/25 \
- --gateway=172.20.1.1 \
- -o parent=eth0 \
- switch
-```
-
-### pull `tun2socks` docker image
-
-```shell script
-docker pull xjasonlyu/tun2socks:latest
-```
-
-### run as gateway
-
-> DNS configuration is required.
-
-```shell script
-docker run -d \
- --network switch \
- --name tun2socks \
- --ip 172.20.1.2 \
- --privileged \
- --restart always \
- --sysctl net.ipv4.ip_forward=1 \
- -e PROXY=socks5://server:port \
- -e KEY=VALUE... \
- xjasonlyu/tun2socks:latest
-```
-
-### use docker-compose (recommended)
-
-```yaml
-version: '2.4'
-
-services:
- tun2socks:
- image: xjasonlyu/tun2socks:latest
- cap_add:
- - NET_ADMIN
- devices:
- - '/dev/net/tun:/dev/net/tun'
- environment:
- # - GODEBUG=madvdontneed=1
- - PROXY=socks5://server:port
- - LOGLEVEL=INFO
- - API=api://:8080
- - DNS=dns://:53
- - HOSTS=localhost=127.0.0.1,router.local=172.20.1.1
- - EXCLUDED=1.1.1.1,1.0.0.1
- - EXTRACMD=
- networks:
- switch:
- ipv4_address: 172.20.1.2
- restart: always
- container_name: tun2socks
-
-networks:
- switch:
- name: switch
- ipam:
- driver: default
- config:
- - subnet: '172.20.1.0/25'
- gateway: 172.20.1.1
- driver: macvlan
- driver_opts:
- parent: eth0
-```
-
-
-
- With Linux
-
-### create tun
-
-```shell script
-ip tuntap add mode tun dev tun0
-ip addr add 198.18.0.1/15 dev tun0
-ip link set dev tun0 up
-```
-
-### config policy routing
-
-```shell script
-echo "100 tun2socks" >> /etc/iproute2/rt_tables
-
-ip route add default via 198.18.0.1 dev tun0 table tun2socks
-ip route add 172.17.0.0/16 dev eth0 src 172.17.0.3 table tun2socks
-ip route add 198.18.0.0/15 dev tun0 src 198.18.0.1 table tun2socks
-
-ip rule add from 172.20.0.3 to 198.18.0.0/15 priority 1000 prohibit
-ip rule add from 172.20.0.3 priority 2000 table main
-ip rule add from all priority 3000 table tun2socks
-```
-
-### run
-
-> bind to a specific interface to prevent traffic looping.
-
-```shell script
-./tun2socks --loglevel info --device tun://tun0 --proxy socks5://server:port --interface eth0
-```
-
-
-
- With MacOS
-
-### start tun2socks
-```shell script
-./tun2socks --loglevel info --device tun://utun123 --proxy socks5://server:port --interface eth0
-```
-
-### config interface
-
-```shell script
-sudo ifconfig utun123 198.18.0.1 netmask 255.255.255.255 198.18.0.1 up
-```
-
-### config route
-
-```shell script
-sudo route del default
-sudo route add default 198.18.0.1
-sudo route add ${proxy_server_ip} ${your_gateway}
-```
-
-### check route table
-
-```shell script
-netstat -nr
-```
-
-
-
- With Script
-
-> entrypoint.sh would take care of tun & routes.
-
-```shell script
-PROXY=socks5://server:port LOGLEVEL=INFO sh ./scripts/entrypoint.sh
-```
-
-
-## Details
-
-
- API Reference
-
-| Path | Methods | Parameters | Description |
-| :--- | :------ | :--------: | :---------- |
-| `/logs` | GET | `level` | Get real-time logs |
-| `/traffic` | GET | / | Get real-time traffic data |
-| `/version` | GET | / | Get current version |
-| `/connections` | GET | `interval` | Get all connections |
-| `/connections` | DELETE | / | Close all connections |
-| `/connections/{id}` | DELETE | / | Close connection by `id` |
-
-
-
-
- Help Text
-
-```text
-Usage of tun2socks:
- -d, --device string Use this device [driver://]name
- -i, --interface string Use network INTERFACE (Darwin/Linux only)
- -l, --loglevel string Log level [debug|info|warn|error|silent] (default "info")
- -m, --mtu int Maximum transmission unit
- -p, --proxy string Use this proxy [protocol://]host[:port]
- --stats string HTTP statistic server listen address
- --token string HTTP statistic server auth token
- -v, --version Show version information and quit
-```
-
-
-
-
- Proxy URL
-
-| Protocol | Scheme | Examples |
-| :------- | :----- | :------- |
-| direct | `direct` | `direct://` |
-| socks5 | `socks5` | `socks5://username:password@server:port` |
-| shadowsocks | `ss`, `shadowsocks` | `ss://method:password@server:port` |
-
-
-
## Credits
- [Dreamacro/clash](https://github.com/Dreamacro/clash)
- [google/gvisor](https://github.com/google/gvisor)
- [majek/slirpnetstack](https://github.com/majek/slirpnetstack)
-- [WireGuard/wireguard-go](https://github.com/WireGuard/wireguard-go)
+- [WireGuard/wireguard-go](https://git.zx2c4.com/wireguard-go)
## Known Issues
-Due to the implementation of pure Go, the memory usage is higher than the previous version.
-If you are sensitive to memory, please go back to [v1](https://github.com/xjasonlyu/tun2socks/tree/v1).
+Due to the implementation of pure Go, the memory consumption is higher than the previous version.
+If you are sensitive to it, please go back to [v1](https://github.com/xjasonlyu/tun2socks/tree/v1).
## TODO
- [x] Windows support
- [x] FreeBSD support
- [x] OpenBSD support
+- [ ] Auto route mode
diff --git a/README_ZH.md b/README_ZH.md
new file mode 100644
index 0000000..f2bfdf1
--- /dev/null
+++ b/README_ZH.md
@@ -0,0 +1,80 @@
+
+
+[![GitHub Workflow][1]](https://github.com/xjasonlyu/tun2socks/actions)
+[![Go Version][2]](https://github.com/xjasonlyu/tun2socks/blob/main/go.mod)
+[![Go Report][3]](https://goreportcard.com/badge/github.com/xjasonlyu/tun2socks)
+[![GitHub License][4]](https://github.com/xjasonlyu/tun2socks/blob/main/LICENSE)
+[![Releases][5]](https://github.com/xjasonlyu/tun2socks/releases)
+
+[1]: https://img.shields.io/github/workflow/status/xjasonlyu/tun2socks/Go/master?style=flat-square
+[2]: https://img.shields.io/github/go-mod/go-version/xjasonlyu/tun2socks?style=flat-square
+[3]: https://goreportcard.com/badge/github.com/xjasonlyu/tun2socks?style=flat-square
+[4]: https://img.shields.io/github/license/xjasonlyu/tun2socks?style=flat-square
+[5]: https://img.shields.io/github/v/release/xjasonlyu/tun2socks?include_prereleases&style=flat-square
+
+[English](README.md)
+
+## 特性
+
+- ICMP 回应 / IPv6 支持 / Socks5 和 SS 代理
+- 适用于游戏加速,由专门优化过UDP流量的传输
+- 纯 Go 实现,编译不再需要 CGO 的加持
+- 路由模式,可以用来转发代理局域网内所有流量
+- 由 [gVisor](https://github.com/google/gvisor) 强力驱动的 TCP/IP 网络栈
+- 实测超过 2.5Gbps 的带宽吞吐量( [v1](https://github.com/xjasonlyu/tun2socks/tree/v1) 版本的10x倍以上)
+
+## 硬件需求
+
+| 目标 | 最小 | 建议 |
+| :----- | :-----: | :---------: |
+| 系统 | Linux MacOS Freebsd OpenBSD Windows | Linux MacOS |
+| 内存 | >20MB | >128MB |
+| 架构 | AMD64(x86_64) ARM64 | AMD64 with AES-NI & AVX2 |
+
+## 文档
+
+文档以及使用方式,请看 [Github Wiki](https://github.com/xjasonlyu/tun2socks/wiki) 。
+
+## 从源码编译
+
+由于 tun2socks 是基于 gVisor的,所以目前只支持 x86_64 和 ARM64 架构。以后可能会支持其他的架构(取决于gVisor)。
+
+### 环境依赖
+
+确保安装了以下环境:
+
+- Go 1.15+
+
+### 开始编译
+
+编译以及安装 `tun2socks` 二进制文件:
+
+```shell
+make tun2socks
+sudo cp ./bin/tun2socks /usr/local/bin
+```
+
+编译所有架构的二进制文件:
+
+```shell
+make all-arch
+```
+
+## 感谢
+
+- [Dreamacro/clash](https://github.com/Dreamacro/clash)
+- [google/gvisor](https://github.com/google/gvisor)
+- [majek/slirpnetstack](https://github.com/majek/slirpnetstack)
+- [WireGuard/wireguard-go](https://git.zx2c4.com/wireguard-go)
+
+## 已知问题
+
+由于采用了纯Go实现,所以这一版本的内存消耗通常会高于上一个版本(在有大量连接时更为明显)。
+如果您的需求对内存消耗极为敏感,请继续使用 [v1](https://github.com/xjasonlyu/tun2socks/tree/v1) 版本。
+
+## TODO
+
+- [x] Windows 支持
+- [x] FreeBSD 支持
+- [x] OpenBSD 支持
+- [ ] 自动路由模式
diff --git a/docs/logo.png b/docs/logo.png
new file mode 100644
index 0000000..5ec7101
Binary files /dev/null and b/docs/logo.png differ