diff --git a/docs/qrcode_structure.png b/docs/qrcode_structure.png
deleted file mode 100644
index 3655494..0000000
Binary files a/docs/qrcode_structure.png and /dev/null differ
diff --git a/writer/standard/README.md b/writer/standard/README.md
index c404f96..3bcba23 100644
--- a/writer/standard/README.md
+++ b/writer/standard/README.md
@@ -68,4 +68,9 @@ func WithCustomImageEncoder(encoder ImageEncoder) ImageOption
// WithBorderWidth(a, b) mean top/bottom equal to `a`, left/right equal to `b`.
// WithBorderWidth(a, b, c, d) mean top, right, bottom, left.
func WithBorderWidth(widths ...int) ImageOption
-```
\ No newline at end of file
+```
+
+### extension
+
+- [How to customize QR Code shape](./how-to-use-custom-shape.md)
+- [How to customize ImageEncoder](./how-to-use-image-encoder.md)
\ No newline at end of file
diff --git a/docs/how-to-use-custom-shape.md b/writer/standard/how-to-use-custom-shape.md
similarity index 93%
rename from docs/how-to-use-custom-shape.md
rename to writer/standard/how-to-use-custom-shape.md
index 498f02b..6e644a3 100644
--- a/docs/how-to-use-custom-shape.md
+++ b/writer/standard/how-to-use-custom-shape.md
@@ -1,12 +1,12 @@
## How to use custom shape
-[Source Code](../example/with-custom-shape/main.go)
+[Source Code](../../example/with-custom-shape/main.go)
first step, you must define your own shape to QRCode, which consists of two part:
* normal cell (of course, there are many types, separator, timing, alignment patter, data, format and version etc)
* finder cell (to help recognizer to locate the matrix's position)
-
+
```go
type IShape interface {
diff --git a/writer/standard/how-to-use-image-encoder.md b/writer/standard/how-to-use-image-encoder.md
new file mode 100644
index 0000000..bcaf604
--- /dev/null
+++ b/writer/standard/how-to-use-image-encoder.md
@@ -0,0 +1 @@
+## Customize image encoder