diff --git a/README.md b/README.md
index 554c47a..87621ed 100644
--- a/README.md
+++ b/README.md
@@ -58,76 +58,9 @@ curl -sD - --upload-file ./hello https://transfer.sh/hello.txt | grep 'X-Url-Del
X-Url-Delete: https://transfer.sh/hello.txt/BAYh0/hello.txt/PDw0NHPcqU
```
-## Add alias to .bashrc or .zshrc
+## Examples
-### Using curl
-```bash
-transfer() {
- curl --progress-bar --upload-file "$1" https://transfer.sh/$(basename "$1") | tee /dev/null;
- echo
-}
-
-alias transfer=transfer
-```
-
-### Using wget
-```bash
-transfer() {
- wget -t 1 -qO - --method=PUT --body-file="$1" --header="Content-Type: $(file -b --mime-type "$1")" https://transfer.sh/$(basename "$1");
- echo
-}
-
-alias transfer=transfer
-```
-
-## Add alias for fish-shell
-
-### Using curl
-```fish
-function transfer --description 'Upload a file to transfer.sh'
- if [ $argv[1] ]
- # write to output to tmpfile because of progress bar
- set -l tmpfile ( mktemp -t transferXXXXXX )
- curl --progress-bar --upload-file "$argv[1]" https://transfer.sh/(basename $argv[1]) >> $tmpfile
- cat $tmpfile
- command rm -f $tmpfile
- else
- echo 'usage: transfer FILE_TO_TRANSFER'
- end
-end
-
-funcsave transfer
-```
-
-### Using wget
-```fish
-function transfer --description 'Upload a file to transfer.sh'
- if [ $argv[1] ]
- wget -t 1 -qO - --method=PUT --body-file="$argv[1]" --header="Content-Type: (file -b --mime-type $argv[1])" https://transfer.sh/(basename $argv[1])
- else
- echo 'usage: transfer FILE_TO_TRANSFER'
- end
-end
-
-funcsave transfer
-```
-
-Now run it like this:
-```bash
-$ transfer test.txt
-```
-
-## Add alias on Windows
-
-Put a file called `transfer.cmd` somewhere in your PATH with this inside it:
-```cmd
-@echo off
-setlocal
-:: use env vars to pass names to PS, to avoid escaping issues
-set FN=%~nx1
-set FULL=%1
-powershell -noprofile -command "$(Invoke-Webrequest -Method put -Infile $Env:FULL https://transfer.sh/$Env:FN).Content"
-```
+See good usage examples on [examples.md](examples.md)
## Link aliases
diff --git a/examples.md b/examples.md
new file mode 100644
index 0000000..362057b
--- /dev/null
+++ b/examples.md
@@ -0,0 +1,176 @@
+# Table of Contents
+
+* [Aliases](#aliases)
+* [Uploading and downloading](#uploading-and-downloading)
+* [Archiving and backups](#archiving-and-backups)
+* [Encrypting and decrypting](#encrypting-and-decrypting)
+* [Scanning for viruses](#scanning-for-viruses)
+
+## Aliases
+
+
+## Add alias to .bashrc or .zshrc
+
+### Using curl
+```bash
+transfer() {
+ curl --progress-bar --upload-file "$1" https://transfer.sh/$(basename "$1") | tee /dev/null;
+ echo
+}
+
+alias transfer=transfer
+```
+
+### Using wget
+```bash
+transfer() {
+ wget -t 1 -qO - --method=PUT --body-file="$1" --header="Content-Type: $(file -b --mime-type "$1")" https://transfer.sh/$(basename "$1");
+ echo
+}
+
+alias transfer=transfer
+```
+
+## Add alias for fish-shell
+
+### Using curl
+```fish
+function transfer --description 'Upload a file to transfer.sh'
+ if [ $argv[1] ]
+ # write to output to tmpfile because of progress bar
+ set -l tmpfile ( mktemp -t transferXXXXXX )
+ curl --progress-bar --upload-file "$argv[1]" https://transfer.sh/(basename $argv[1]) >> $tmpfile
+ cat $tmpfile
+ command rm -f $tmpfile
+ else
+ echo 'usage: transfer FILE_TO_TRANSFER'
+ end
+end
+
+funcsave transfer
+```
+
+### Using wget
+```fish
+function transfer --description 'Upload a file to transfer.sh'
+ if [ $argv[1] ]
+ wget -t 1 -qO - --method=PUT --body-file="$argv[1]" --header="Content-Type: (file -b --mime-type $argv[1])" https://transfer.sh/(basename $argv[1])
+ else
+ echo 'usage: transfer FILE_TO_TRANSFER'
+ end
+end
+
+funcsave transfer
+```
+
+Now run it like this:
+```bash
+$ transfer test.txt
+```
+
+## Add alias on Windows
+
+Put a file called `transfer.cmd` somewhere in your PATH with this inside it:
+```cmd
+@echo off
+setlocal
+:: use env vars to pass names to PS, to avoid escaping issues
+set FN=%~nx1
+set FULL=%1
+powershell -noprofile -command "$(Invoke-Webrequest -Method put -Infile $Env:FULL https://transfer.sh/$Env:FN).Content"
+```
+
+## Uploading and Downloading
+
+
+### Uploading with wget
+```bash
+$ wget --method PUT --body-file=/tmp/file.tar https://transfer.sh/file.tar -O - -nv
+```
+
+### Uploading with PowerShell
+```posh
+PS H:\> invoke-webrequest -method put -infile .\file.txt https://transfer.sh/file.txt
+```
+
+### Upload using HTTPie
+```bash
+$ http https://transfer.sh/ -vv < /tmp/test.log
+```
+
+### Uploading a filtered text file
+```bash
+$ grep 'pound' /var/log/syslog | curl --upload-file - https://transfer.sh/pound.log
+```
+
+### Downloading with curl
+```bash
+$ curl https://transfer.sh/1lDau/test.txt -o test.txt
+```
+
+### Downloading with wget
+```bash
+$ wget https://transfer.sh/1lDau/test.txt
+```
+
+## Archiving and backups
+
+
+### Backup, encrypt and transfer a MySQL dump
+```bash
+$ mysqldump --all-databases | gzip | gpg -ac -o- | curl -X PUT --upload-file "-" https://transfer.sh/test.txt
+```
+
+### Archive and upload directory
+```bash
+$ tar -czf - /var/log/journal | curl --upload-file - https://transfer.sh/journal.tar.gz
+```
+
+### Uploading multiple files at once
+```bash
+$ curl -i -F filedata=@/tmp/hello.txt -F filedata=@/tmp/hello2.txt https://transfer.sh/
+```
+
+### Combining downloads as zip or tar.gz archive
+```bash
+$ curl https://transfer.sh/(15HKz/hello.txt,15HKz/hello.txt).tar.gz
+$ curl https://transfer.sh/(15HKz/hello.txt,15HKz/hello.txt).zip
+```
+
+### Transfer and send email with link (using an alias)
+```bash
+$ transfer /tmp/hello.txt | mail -s "Hello World" user@yourmaildomain.com
+```
+## Encrypting and decrypting
+
+
+### Encrypting files with password using gpg
+```bash
+$ cat /tmp/hello.txt | gpg -ac -o- | curl -X PUT --upload-file "-" https://transfer.sh/test.txt
+```
+
+### Downloading and decrypting
+```bash
+$ curl https://transfer.sh/1lDau/test.txt | gpg -o- > /tmp/hello.txt
+```
+
+### Import keys from [keybase](https://keybase.io/)
+```bash
+$ keybase track [them] # Encrypt for recipient(s)
+$ cat somebackupfile.tar.gz | keybase encrypt [them] | curl --upload-file '-' https://transfer.sh/test.txt # Decrypt
+$ curl https://transfer.sh/sqUFi/test.md | keybase decrypt
+```
+
+## Scanning for viruses
+
+
+### Scan for malware or viruses using Clamav
+```bash
+$ wget http://www.eicar.org/download/eicar.com
+$ curl -X PUT --upload-file ./eicar.com https://transfer.sh/eicar.com/scan
+```
+
+### Upload malware to VirusTotal, get a permalink in return
+```bash
+$ curl -X PUT --upload-file nhgbhhj https://transfer.sh/test.txt/virustotal
+```
\ No newline at end of file