diff --git a/pcl_expect.py b/pcl_expect.py
index bb8d3bcea65c949b70c5cda8f1ace80dbcc6294e..968992cbcd9f607b4b04157360fa090d1efe54b2 100644
--- a/pcl_expect.py
+++ b/pcl_expect.py
@@ -427,6 +427,54 @@ def __validate_expectations(expectations):
         else:
             raise BadArgs
 
+def expect(expectations):
+    x = impl()
+    while x.loop():
+        for ix in range(len(expectations)):
+            pattern = expectations[ix]
+            if pattern[0] == RE:
+                if len(pattern) == 3:
+                    (cmd, exp, regexp) = pattern
+                    callback = None
+                elif len(pattern) == 4:
+                    (cmd, exp, regexp, callback) = pattern
+                else:
+                    raise BadArgs
+                if x.re(exp, regexp):
+                    if callback is not None and callback(exp) == CONT:
+                        x.cont()
+                        break
+                    else:
+                        return ix, exp
+            elif pattern[0] == EOF:
+                if len(pattern) == 2:
+                    (cmd, exp) = pattern
+                    callback = None
+                elif len(pattern) == 3:
+                    (cmd, exp, callback) = pattern
+                else:
+                    raise BadArgs
+                if x.eof(exp):
+                    if callback is not None and callback(exp) == CONT:
+                        x.cont()
+                        break
+                    else:
+                        return ix, exp
+            elif pattern[0] == TIMEOUT:
+                if len(pattern) == 1:
+                    cmd = pattern[0]
+                elif len(pattern) == 2:
+                    (cmd, callback) = pattern
+                else:
+                    raise BadArgs
+                if x.timeout():
+                    if callback is not None and callback() == CONT:
+                        x.cont()
+                        break
+                    else:
+                        return ix, None
+    return None, None
+
 def debug(s):
     if 0:
         sys.stderr.write("pcl-expect: %s\n" % s)