diff --git a/demo/ftp_interact.py b/demo/ftp_interact.py
index 831929f17b24f46a9e0e0c1e285959d19f0df5e3..990a81c682a41924839aa6bd2738d13e601c0454 100644
--- a/demo/ftp_interact.py
+++ b/demo/ftp_interact.py
@@ -36,34 +36,29 @@ cmd("cd pub")
 cmd("cd gnu")
 cmd("passive")
 
-user_spawn_id = None
-try:
-    user_spawn_id = pcl_expect.user.user(pcl_expect.user.COOKED)
-    user_spawn_id.send("ftp> ")
-    buf = ""
+user_spawn_id = pcl_expect.user.user()
+user_spawn_id.send("ftp> ")
+buf = ""
 
-    x = pcl_expect.controller()
-    while x.loop():
-        if x.re(user_spawn_id, "..*"):
-            s = user_spawn_id.match.group()
-            buf += s
-        elif x.re(user_spawn_id, "\n"):
-            if buf == "home":
-                cmd("cd /pub/gnu/ftp.gnu.org/pub/gnu")
-                user_spawn_id.send("ftp> ")
-            else:
-                ftp.send(buf + "\n")
-            buf = ""
-        elif x.eof(user_spawn_id):
-            user_spawn_id.send("\nGot eof from stdin\n")
-            break
-        elif x.re(ftp, "(?s)..*"):
-            user_spawn_id.send(ftp.match.group())
-        elif x.eof(ftp):
-            user_spawn_id.send("\nGot eof from ftp process\n")
-            break
-        elif x.timeout():
-            pass
-finally:
-    if user_spawn_id is not None:
-        user_spawn_id.close()
+x = pcl_expect.controller()
+while x.loop():
+    if x.re(user_spawn_id, "..*"):
+        s = user_spawn_id.match.group()
+        buf += s
+    elif x.re(user_spawn_id, "\n"):
+        if buf == "home":
+            cmd("cd /pub/gnu/ftp.gnu.org/pub/gnu")
+            user_spawn_id.send("ftp> ")
+        else:
+            ftp.send(buf + "\n")
+        buf = ""
+    elif x.eof(user_spawn_id):
+        user_spawn_id.send("\nGot eof from stdin\n")
+        break
+    elif x.re(ftp, "(?s)..*"):
+        user_spawn_id.send(ftp.match.group())
+    elif x.eof(ftp):
+        user_spawn_id.send("\nGot eof from ftp process\n")
+        break
+    elif x.timeout():
+        pass