TODO list
diff --git a/README.md b/README.md
index d7628c4..7b36eb1 100644
--- a/README.md
+++ b/README.md
@@ -189,10 +189,6 @@
 
 [Terminal codes (ANSI/VT100)](http://wiki.bash-hackers.org/scripting/terminalcodes)
 
-## ToDo
-
- - expose an API callable from C
-
 ## Wine
 
 ```sh
diff --git a/TODO.md b/TODO.md
new file mode 100644
index 0000000..4ee6a82
--- /dev/null
+++ b/TODO.md
@@ -0,0 +1,66 @@
+API
+- [ ] expose an API callable from C
+
+Bell
+- [ ] bell-style
+
+Color
+- [ ] ANSI Colors & Windows 10+
+- [ ] ANSI Colors & Windows <10
+- [ ] Syntax highlighting
+
+Completion
+- [ ] Quoted path ()
+- [ ] Windows escape/unescape space in path
+- [ ] file completion & escape/unescape (#106)
+- [ ] file completion & tilde (#62)
+- [ ] display versus replacement
+
+Config
+- [ ] Maximum buffer size for the line read
+
+Cursor
+- [ ] insert versus overwrite versus command mode
+- [ ] In Vi command mode, prevent user from going to end of line. (#94)
+
+Grapheme
+- [ ] grapheme & input auto-wrap are buggy
+
+Hints Callback
+- [ ] Not implemented on windows
+
+History
+- [ ] Move to the history line n
+- [ ] historyFile: Where to read/write the history at the start and end of
+each line input session.
+- [ ] append_history
+- [ ] history_truncate_file
+
+Input
+- [ ] Password input (#58)
+- [ ] quoted insert (#65)
+- [ ] Overwrite mode (em-toggle-overwrite, vi-replace-mode, rl_insert_mode)
+- [ ] Encoding
+
+Mouse
+- [ ] Mouse support
+
+Movement
+- [ ] Move to the corresponding opening/closing bracket
+
+Repeat
+- [ ] dynamic prompt (arg: ?)
+- [ ] transpose chars
+
+Undo
+- [ ] Merge consecutive Replace
+- [ ] Undo group
+- [ ] Undo all changes made to this line.
+
+Unix
+- [ ] Terminfo (https://github.com/Stebalien/term)
+
+Windows
+- [ ] is_atty is not working with cygwin/msys
+- [ ] UTF-16 surrogate pair
+- [ ] handle ansi escape code
diff --git a/src/completion.rs b/src/completion.rs
index e6e76aa..8312269 100644
--- a/src/completion.rs
+++ b/src/completion.rs
@@ -10,7 +10,7 @@
 // TODO: let the implementers choose/find word boudaries ???
 // (line, pos) is like (rl_line_buffer, rl_point) to make contextual completion
 // ("select t.na| from tbl as t")
-// TOOD: make &self &mut self ???
+// TODO: make &self &mut self ???
 
 /// To be called for tab-completion.
 pub trait Completer {
@@ -18,7 +18,7 @@
     /// returns the start position and the completion candidates for the
     /// partial word to be completed.
     ///
-    /// "ls /usr/loc" => Ok((3, vec!["/usr/local/"]))
+    /// ("ls /usr/loc", 11) => Ok((3, vec!["/usr/local/"]))
     fn complete(&self, line: &str, pos: usize) -> Result<(usize, Vec<String>)>;
     /// Updates the edited `line` with the `elected` candidate.
     fn update(&self, line: &mut LineBuffer, start: usize, elected: &str) {