init
diff --git a/loop/prompt.go b/loop/prompt.go
new file mode 100644
index 0000000..c889247
--- /dev/null
+++ b/loop/prompt.go
@@ -0,0 +1,28 @@
+package loop
+
+import (
+	"bufio"
+	"fmt"
+	"io"
+)
+
+type PromptReader interface {
+	Read() (string, error)
+}
+
+type IOReaderPromptReader struct {
+	s *bufio.Scanner
+}
+
+func NewIOReaderPromptReader(r io.Reader) *IOReaderPromptReader {
+	return &IOReaderPromptReader{
+		s: bufio.NewScanner(r),
+	}
+}
+
+func (r IOReaderPromptReader) Read() (string, error) {
+	if !r.s.Scan() {
+		return "", fmt.Errorf("done")
+	}
+	return r.s.Text(), nil
+}