Wiki data import from Google Code
diff --git a/Rationales.md b/Rationales.md
new file mode 100644
index 0000000..eabca8e
--- /dev/null
+++ b/Rationales.md
@@ -0,0 +1,29 @@
+# Introduction
+
+This wiki entry will try to document the rationales behind some important language
+decisions besides what's included in the Go FAQ and Effective Go.
+
+# Language Features
+### Why method receiver's base type cannot be pointer or interface?
+Reference: https://groups.google.com/forum/#!topic/golang-nuts/aqTwXHaSC_Y
+
+Go doesn't allow receiver's base type to be pointer to avoid possible ambiguity.
+Suppose you have:
+```
+type T blah
+type P *T
+
+func (t *T) String() string { ... }
+func (p P) String() string { ... }
+
+var p P
+```
+
+Then the meaning of the expression ` (*p).String() ` is ambiguous, because it can refer to
+both ` (*T).String ` and ` P.String `.
+
+Go doesn't allow receiver's base type to be interfaces, because interfaces already have methods. (TODO)
+
+# Memory Model
+
+# Standard Library
\ No newline at end of file