diff --git a/examples/simple.go b/examples/simple.go
index <HASH>..<HASH> 100644
--- a/examples/simple.go
+++ b/examples/simple.go
@@ -20,6 +20,11 @@ var qs = []*probe.Question{
 }
 
 func main() {
-	answers := probe.Ask(qs)
+	answers, err := probe.Ask(qs)
+	if err != nil {
+		fmt.Println("\n", err.Error())
+		return
+	}
+
 	fmt.Printf("%s chose %s.\n", answers["name"], answers["color"])
 }
diff --git a/probe.go b/probe.go
index <HASH>..<HASH> 100644
--- a/probe.go
+++ b/probe.go
@@ -14,7 +14,7 @@ type Prompt interface {
 	Prompt() (string, error)
 }
 
-func Ask(qs []*Question) map[string]string {
+func Ask(qs []*Question) (map[string]string, error) {
 	// the response map
 	res := make(map[string]string)
 	// go over every question
@@ -23,11 +23,12 @@ func Ask(qs []*Question) map[string]string {
 		ans, err := q.Prompt.Prompt()
 		// if something went wrong
 		if err != nil {
-			panic(err)
+			// stop listening
+			return nil, err
 		}
 		// add it to the map
 		res[q.Name] = ans
 	}
 	// return the response
-	return res
+	return res, nil
 }
ask no longer panics, just returns error