diff --git a/apps/app_directory.c b/apps/app_directory.c
index 3856bb04c5331d1215515522ead941c93123a74b..0c165df906ff561245c351544a575d257269dde2 100644
--- a/apps/app_directory.c
+++ b/apps/app_directory.c
@@ -168,47 +168,32 @@ static int play_mailbox_owner(struct ast_channel *chan, char *context, char *dia
 		(char *)ast_config_AST_SPOOL_DIR, ext);
 
 	if (ast_fileexists(fn, NULL, chan->language) > 0) {
-		res = ast_streamfile(chan, fn, chan->language);
-		if (!res) {
-			res = ast_waitstream(chan, AST_DIGIT_ANY);
-		}
+		res = ast_stream_and_wait(chan, fn, chan->language, AST_DIGIT_ANY);
 		ast_stopstream(chan);
 		/* If Option 'e' was specified, also read the extension number with the name */
 		if (readext) {
-			res = ast_streamfile(chan, "vm-extension", chan->language);
-			if (!res)
-				res = ast_waitstream(chan, AST_DIGIT_ANY);
+			ast_stream_and_wait(chan, "vm-extension", chan->language, AST_DIGIT_ANY);
 			res = ast_say_character_str(chan, ext, AST_DIGIT_ANY, chan->language);
 		}
 	} else if (ast_fileexists(fn2, NULL, chan->language) > 0) {
-		res = ast_streamfile(chan, fn2, chan->language);
-		if (!res)
-			res = ast_waitstream(chan, AST_DIGIT_ANY);
+		res = ast_stream_and_wait(chan, fn2, chan->language, AST_DIGIT_ANY);
 		ast_stopstream(chan);
 		/* If Option 'e' was specified, also read the extension number with the name */
 		if (readext) {
-			res = ast_streamfile(chan, "vm-extension", chan->language);
-			if (!res) {
-				res = ast_waitstream(chan, AST_DIGIT_ANY);
-			}
+			ast_stream_and_wait(chan, "vm-extension", chan->language, AST_DIGIT_ANY);
 			res = ast_say_character_str(chan, ext, AST_DIGIT_ANY, chan->language);
 		}
 	} else {
-		res = ast_say_character_str(chan, S_OR(name, ext),
-					AST_DIGIT_ANY, chan->language);
+		res = ast_say_character_str(chan, S_OR(name, ext), AST_DIGIT_ANY, chan->language);
 		if (!ast_strlen_zero(name) && readext) {
-			res = ast_streamfile(chan, "vm-extension", chan->language);
-			if (!res)
-				res = ast_waitstream(chan, AST_DIGIT_ANY);
+			ast_stream_and_wait(chan, "vm-extension", chan->language, AST_DIGIT_ANY);
 			res = ast_say_character_str(chan, ext, AST_DIGIT_ANY, chan->language);
 		}
 	}
 
 	while (loop) {
 		if (!res)
-			res = ast_streamfile(chan, "dir-instr", chan->language);
-		if (!res)
-			res = ast_waitstream(chan, AST_DIGIT_ANY);
+			res = ast_stream_and_wait(chan, "dir-instr", chan->language, AST_DIGIT_ANY);
 		if (!res)
 			res = ast_waitfordigit(chan, 3000);
 		ast_stopstream(chan);
@@ -479,9 +464,7 @@ static int directory_exec(struct ast_channel *chan, void *data)
 
 	for (;;) {
 		if (!res)
-			res = ast_streamfile(chan, dirintro, chan->language);
-		if (!res)
-			res = ast_waitstream(chan, AST_DIGIT_ANY);
+			res = ast_stream_and_wait(chan, dirintro, chan->language, AST_DIGIT_ANY);
 		ast_stopstream(chan);
 		if (!res)
 			res = ast_waitfordigit(chan, 5000);