diff --git a/extensions.md b/extensions.md
index 26adb38d1e..fb9a3ff46c 100644
--- a/extensions.md
+++ b/extensions.md
@@ -38,7 +38,7 @@ You might also find that basic structs that started their life as part of an API
Name | Option | Type | Description | Default |
nullable | Field | bool | if false, a field is generated without a pointer (see warning below). | true |
embed | Field | bool | if true, the field is generated as an embedded field. | false |
-customtype | Field | string | It works with the Marshal and Unmarshal methods, to allow you to have your own types in your struct, but marshal to bytes. For example, custom.Uuid or custom.Fixed128. For more information please refer to the [CustomTypes](custom_types.md) document | goprotobuf type |
+customtype | Field | string | It works with the Marshal and Unmarshal methods, to allow you to have your own types in your struct, but marshal to bytes. For example, custom.Uuid or custom.Fixed128. For more information please refer to the CustomTypes document | goprotobuf type |
customname (beta) | Field | string | Changes the generated fieldname. This is especially useful when generated methods conflict with fieldnames. | goprotobuf field name |
casttype (beta) | Field | string | Changes the generated field type. It assumes that this type is castable to the original goprotobuf field type. It currently does not support maps, structs or enums. | goprotobuf field type |
castkey (beta) | Field | string | Changes the generated fieldtype for a map key. All generated code assumes that this type is castable to the protocol buffer field type. Only supported on maps. | goprotobuf field type |