diff --git a/shell/main.c b/shell/main.c
index 2b926c9..c040f08 100644
--- a/shell/main.c
+++ b/shell/main.c
@@ -54,6 +54,7 @@
 
 static gchar   *ev_page_label;
 static gchar   *ev_find_string;
+static int    ev_page_index = -1;
 static gboolean preview_mode = FALSE;
 static gboolean fullscreen_mode = FALSE;
 static gboolean presentation_mode = FALSE;
@@ -61,6 +62,7 @@ static gboolean unlink_temp_file = FALSE;
 static gchar   *print_settings;
 static const char **file_arguments = NULL;
 
+
 static gboolean
 option_version_cb (const gchar *option_name,
                    const gchar *value,
@@ -75,7 +77,8 @@ option_version_cb (const gchar *option_name,
 
 static const GOptionEntry goption_options[] =
 {
-	{ "page-label", 'p', 0, G_OPTION_ARG_STRING, &ev_page_label, N_("The page of the document to display."), N_("PAGE")},
+	{ "page-label", 'p', 0, G_OPTION_ARG_STRING, &ev_page_label, N_("The page label of the document to display."), N_("PAGE")},
+	{ "page-index", 'i', 0, G_OPTION_ARG_INT, &ev_page_index, N_("The page number of the document to display (0 based)."), N_("NUMBER")},
 	{ "fullscreen", 'f', 0, G_OPTION_ARG_NONE, &fullscreen_mode, N_("Run evince in fullscreen mode"), NULL },
 	{ "presentation", 's', 0, G_OPTION_ARG_NONE, &presentation_mode, N_("Run evince in presentation mode"), NULL },
 	{ "preview", 'w', 0, G_OPTION_ARG_NONE, &preview_mode, N_("Run evince as a previewer"), NULL },
@@ -157,6 +160,10 @@ load_files (const char **files)
 		return;
 	}
 
+	if (ev_page_index >= 0) {
+                printf("setting page number [%d]\n", ev_page_index);
+		global_dest = ev_link_dest_new_page(ev_page_index);
+        }
 	if (ev_page_label)
 		global_dest = ev_link_dest_new_page_label (ev_page_label);
 
