diff --git a/app/src/main/java/net/named_data/nfd/MainFragment.java b/app/src/main/java/net/named_data/nfd/MainFragment.java
index 7eb03aa..68e9690 100644
--- a/app/src/main/java/net/named_data/nfd/MainFragment.java
+++ b/app/src/main/java/net/named_data/nfd/MainFragment.java
@@ -25,6 +25,7 @@
 import android.content.Intent;
 import android.content.ServiceConnection;
 import android.content.SharedPreferences;
+import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
@@ -39,9 +40,16 @@
 import android.view.ViewGroup;
 import android.widget.CompoundButton;
 import android.widget.Switch;
+import android.widget.TextView;
+
+import com.intel.jndn.management.types.ForwarderStatus;
 
 import net.named_data.nfd.service.NfdService;
 import net.named_data.nfd.utils.G;
+import net.named_data.nfd.utils.Nfdc;
+
+import org.joda.time.Period;
+import org.joda.time.format.PeriodFormat;
 
 public class MainFragment extends Fragment {
 
@@ -84,6 +92,20 @@
       }
     });
 
+    m_nfdStatusView = (ViewGroup)v.findViewById(R.id.status_view);
+    m_nfdStatusView.setVisibility(View.GONE);
+    m_versionView = (TextView)v.findViewById(R.id.version);
+    m_uptimeView = (TextView)v.findViewById(R.id.uptime);
+    m_nameTreeEntriesView = (TextView)v.findViewById(R.id.name_tree_entries);
+    m_fibEntriesView = (TextView)v.findViewById(R.id.fib_entries);
+    m_pitEntriesView = (TextView)v.findViewById(R.id.pit_entries);
+    m_measurementEntriesView = (TextView)v.findViewById(R.id.measurement_entries);
+    m_csEntriesView = (TextView)v.findViewById(R.id.cs_entries);
+    m_inInterestsView = (TextView)v.findViewById(R.id.in_interests);
+    m_outInterestsView = (TextView)v.findViewById(R.id.out_interests);
+    m_inDataView = (TextView)v.findViewById(R.id.in_data);
+    m_outDataView = (TextView)v.findViewById(R.id.out_data);
+
     return v;
   }
 
@@ -101,6 +123,7 @@
     super.onPause();
 
     unbindNfdService();
+    m_handler.removeCallbacks(m_statusUpdateRunnable);
     m_handler.removeCallbacks(m_retryConnectionToNfdService);
   }
 
@@ -145,6 +168,10 @@
 
     m_nfdStartStopSwitch.setText(R.string.stopping_nfd);
     sendNfdServiceMessage(NfdService.STOP_NFD_SERVICE);
+
+    // disable status block
+    m_nfdStatusView.setVisibility(View.GONE);
+    m_handler.removeCallbacks(m_statusUpdateRunnable);
   }
 
   /**
@@ -204,6 +231,8 @@
         case NfdService.NFD_SERVICE_RUNNING:
           setNfdServiceRunning();
           G.Log("ClientHandler: NFD is Running.");
+
+          m_handler.post(m_statusUpdateRunnable);
           break;
 
         case NfdService.NFD_SERVICE_STOPPED:
@@ -275,6 +304,59 @@
     }
   };
 
+  private class StatusUpdateTask extends AsyncTask<Void, Void, ForwarderStatus> {
+    /**
+     * @param voids
+     * @return ForwarderStatus if operation succeeded, null if operation failed
+     */
+    @Override
+    protected ForwarderStatus
+    doInBackground(Void... voids)
+    {
+      try {
+        Nfdc nfdc = new Nfdc();
+        ForwarderStatus fs = nfdc.generalStatus();
+        nfdc.shutdown();
+        return fs;
+      }
+      catch (Exception e) {
+        G.Log("Error communicating with NFD (" + e.getMessage() + ")");
+        return null;
+      }
+    }
+
+    @Override
+    protected void
+    onPostExecute(ForwarderStatus fs)
+    {
+      if (fs == null) {
+        // Maybe display error message from result.second
+      }
+      else {
+        m_versionView.setText(fs.getNfdVersion());
+        m_uptimeView.setText(PeriodFormat.getDefault().print(new Period(
+          fs.getCurrentTimestamp() - fs.getStartTimestamp())));
+        m_nameTreeEntriesView.setText(String.valueOf(
+          fs.getNumNameTreeEntries()));
+        m_fibEntriesView.setText(String.valueOf(fs.getNumFibEntries()));
+        m_pitEntriesView.setText(String.valueOf(fs.getNumPitEntries()));
+        m_measurementEntriesView.setText(String.valueOf(
+          fs.getNumMeasurementEntries()));
+        m_csEntriesView.setText(String.valueOf(fs.getNumCsEntries()));
+
+        m_inInterestsView.setText(String.valueOf(fs.getNumInInterests()));
+        m_outInterestsView.setText(String.valueOf(
+          fs.getNumOutInterests()));
+        m_inDataView.setText(String.valueOf(fs.getNumInDatas()));
+        m_outDataView.setText(String.valueOf(fs.getNumOutDatas()));
+
+        m_nfdStatusView.setVisibility(View.VISIBLE);
+      }
+
+      m_handler.postDelayed(m_statusUpdateRunnable, 5000);
+    }
+  }
+
   //////////////////////////////////////////////////////////////////////////////
 
   /** Button that starts and stops the NFD */
@@ -289,7 +371,29 @@
   /** Messenger connection to NfdService */
   private Messenger m_nfdServiceMessenger = null;
 
+  /** ListView holding NFD status information */
+  private ViewGroup m_nfdStatusView;
+
+  private TextView m_versionView;
+  private TextView m_uptimeView;
+  private TextView m_nameTreeEntriesView;
+  private TextView m_fibEntriesView;
+  private TextView m_pitEntriesView;
+  private TextView m_measurementEntriesView;
+  private TextView m_csEntriesView;
+  private TextView m_inInterestsView;
+  private TextView m_outInterestsView;
+  private TextView m_inDataView;
+  private TextView m_outDataView;
+
   private Handler m_handler;
+  private Runnable m_statusUpdateRunnable = new Runnable() {
+    @Override
+    public void run()
+    {
+      new StatusUpdateTask().execute();
+    }
+  };
 
   private static final String PREF_NFD_SERVICE_STATUS = "NFD_SERVICE_STATUS";
 }
diff --git a/app/src/main/java/net/named_data/nfd/RouteListFragment.java b/app/src/main/java/net/named_data/nfd/RouteListFragment.java
index f6c787f..61d39d5 100644
--- a/app/src/main/java/net/named_data/nfd/RouteListFragment.java
+++ b/app/src/main/java/net/named_data/nfd/RouteListFragment.java
@@ -305,25 +305,25 @@
     protected String
     doInBackground(Void... params)
     {
+      Nfdc nfdc = new Nfdc();
       try {
-        Nfdc nfdc = new Nfdc();
         int faceId = nfdc.faceCreate(m_faceUri);
-        boolean ok = nfdc.ribRegisterPrefix(new Name(m_prefix), faceId, 10, true, false);
+        nfdc.ribRegisterPrefix(new Name(m_prefix), faceId, 10, true, false);
         nfdc.shutdown();
-        if (ok) {
-          return "OK";
-        }
-        else {
-          return "Failed register prefix";
-        }
-      } catch (FaceUri.CanonizeError e) {
+        return "OK";
+      }
+      catch (FaceUri.CanonizeError e) {
         return "Error creating face (" + e.getMessage() + ")";
-      } catch (FaceUri.Error e) {
+      }
+      catch (FaceUri.Error e) {
         return "Error creating face (" + e.getMessage() + ")";
       }
       catch (Exception e) {
         return "Error communicating with NFD (" + e.getMessage() + ")";
       }
+      finally {
+        nfdc.shutdown();
+      }
     }
 
     @Override
diff --git a/app/src/main/java/net/named_data/nfd/utils/Nfdc.java b/app/src/main/java/net/named_data/nfd/utils/Nfdc.java
index 5517449..b376501 100644
--- a/app/src/main/java/net/named_data/nfd/utils/Nfdc.java
+++ b/app/src/main/java/net/named_data/nfd/utils/Nfdc.java
@@ -21,6 +21,7 @@
 
 import com.intel.jndn.management.NFD;
 import com.intel.jndn.management.types.FaceStatus;
+import com.intel.jndn.management.types.ForwarderStatus;
 import com.intel.jndn.management.types.RibEntry;
 
 import net.named_data.jndn.ControlParameters;
@@ -72,6 +73,16 @@
   }
 
   /**
+   * Get general NFD status
+   */
+  public ForwarderStatus
+  generalStatus() throws Exception
+  {
+    return NFD.getForwarderStatus(m_face);
+  }
+
+
+  /**
    * Adds a nexthop to a FIB entry
    * <p>
    * If the FIB entry does not exist, it is inserted automatically
@@ -94,18 +105,18 @@
   /**
    * Registers name to the given faceId or faceUri
    */
-  public boolean
+  public void
   ribRegisterPrefix(Name prefix, int faceId, int cost, boolean isChildInherit, boolean isCapture) throws Exception
   {
     ForwardingFlags flags = new ForwardingFlags();
     flags.setChildInherit(isChildInherit);
     flags.setCapture(isCapture);
-    return NFD.register(m_face,
-                        new ControlParameters()
-                          .setName(prefix)
-                          .setFaceId(faceId)
-                          .setCost(cost)
-                          .setForwardingFlags(flags));
+    NFD.register(m_face,
+                 new ControlParameters()
+                   .setName(prefix)
+                   .setFaceId(faceId)
+                   .setCost(cost)
+                   .setForwardingFlags(flags));
   }
 
   /**
diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml
index 9fa4afa..7a8c93a 100644
--- a/app/src/main/res/layout/fragment_main.xml
+++ b/app/src/main/res/layout/fragment_main.xml
@@ -1,17 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout
+<ScrollView
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    style="@style/default_linear_layout_padding"
-    >
+    android:layout_height="wrap_content">
+
+  <LinearLayout
+      style="@style/default_linear_layout_padding"
+      android:layout_width="match_parent"
+      android:layout_height="match_parent"
+      android:orientation="vertical"
+      >
 
     <TextView
+        style="?android:listSeparatorTextViewStyle"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:text="@string/pref_category_title_general"
-        style="?android:listSeparatorTextViewStyle"
         />
 
     <Switch
@@ -22,4 +26,106 @@
         android:text="@string/checking_on_nfd"
         />
 
-</LinearLayout>
\ No newline at end of file
+    <LinearLayout android:id="@+id/status_view"
+                  android:layout_width="match_parent"
+                  android:layout_height="wrap_content"
+                  android:orientation="vertical"
+                  android:visibility="gone">
+
+      <TextView style="?android:listSeparatorTextViewStyle"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/pref_category_title_status"
+                />
+
+      <LinearLayout style="@style/main_fragment_linear_layout">
+        <TextView style="@style/main_fragment_list_title"
+                  android:text="@string/version" />
+
+        <TextView android:id="@+id/version"
+                  style="@style/main_fragment_list_value" />
+      </LinearLayout>
+
+      <LinearLayout style="@style/main_fragment_linear_layout">
+        <TextView style="@style/main_fragment_list_title"
+                  android:text="@string/uptime" />
+
+        <TextView android:id="@+id/uptime"
+                  style="@style/main_fragment_list_value" />
+      </LinearLayout>
+
+      <LinearLayout style="@style/main_fragment_linear_layout">
+        <TextView style="@style/main_fragment_list_title"
+                  android:text="@string/name_tree_entries" />
+
+        <TextView android:id="@+id/name_tree_entries"
+                  style="@style/main_fragment_list_value" />
+      </LinearLayout>
+
+      <LinearLayout style="@style/main_fragment_linear_layout">
+        <TextView style="@style/main_fragment_list_title"
+                  android:text="@string/fib_entries" />
+
+        <TextView android:id="@+id/fib_entries"
+                  style="@style/main_fragment_list_value" />
+      </LinearLayout>
+
+      <LinearLayout style="@style/main_fragment_linear_layout">
+        <TextView style="@style/main_fragment_list_title"
+                  android:text="@string/pit_entries" />
+
+        <TextView android:id="@+id/pit_entries"
+                  style="@style/main_fragment_list_value" />
+      </LinearLayout>
+
+      <LinearLayout style="@style/main_fragment_linear_layout">
+        <TextView style="@style/main_fragment_list_title"
+                  android:text="@string/measurement_entries" />
+
+        <TextView android:id="@+id/measurement_entries"
+                  style="@style/main_fragment_list_value" />
+      </LinearLayout>
+
+      <LinearLayout style="@style/main_fragment_linear_layout">
+        <TextView style="@style/main_fragment_list_title"
+                  android:text="@string/cs_entries" />
+
+        <TextView android:id="@+id/cs_entries"
+                  style="@style/main_fragment_list_value" />
+      </LinearLayout>
+
+      <LinearLayout style="@style/main_fragment_linear_layout">
+        <TextView style="@style/main_fragment_list_title"
+                  android:text="@string/in_interests" />
+
+        <TextView android:id="@+id/in_interests"
+                  style="@style/main_fragment_list_value" />
+      </LinearLayout>
+
+      <LinearLayout style="@style/main_fragment_linear_layout">
+        <TextView style="@style/main_fragment_list_title"
+                  android:text="@string/out_interests" />
+
+        <TextView android:id="@+id/out_interests"
+                  style="@style/main_fragment_list_value" />
+      </LinearLayout>
+
+      <LinearLayout style="@style/main_fragment_linear_layout">
+        <TextView style="@style/main_fragment_list_title"
+                  android:text="@string/in_data" />
+
+        <TextView android:id="@+id/in_data"
+                  style="@style/main_fragment_list_value" />
+      </LinearLayout>
+
+      <LinearLayout style="@style/main_fragment_linear_layout">
+        <TextView style="@style/main_fragment_list_title"
+                  android:text="@string/out_data" />
+
+        <TextView android:id="@+id/out_data"
+                  style="@style/main_fragment_list_value" />
+      </LinearLayout>
+
+    </LinearLayout>
+  </LinearLayout>
+</ScrollView>
diff --git a/app/src/main/res/layout/status_item.xml b/app/src/main/res/layout/status_item.xml
new file mode 100644
index 0000000..549de06
--- /dev/null
+++ b/app/src/main/res/layout/status_item.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    style="@style/main_fragment_linear_layout">
+    <TextView style="@style/main_fragment_list_title"
+              android:id="@+id/title" />
+
+    <TextView style="@style/main_fragment_list_value"
+              android:id="@+id/value" />
+</LinearLayout>
diff --git a/app/src/main/res/values/strings_main_activity.xml b/app/src/main/res/values/strings_main_activity.xml
index 9a41a2f..8b67095 100644
--- a/app/src/main/res/values/strings_main_activity.xml
+++ b/app/src/main/res/values/strings_main_activity.xml
@@ -1,7 +1,19 @@
 <resources>
     <!-- General -->
     <string name="pref_category_title_general">General</string>
-    <string name="pref_category_title_general_key">General_Key</string>
+    <string name="pref_category_title_status">NFD Status</string>
+
+    <string name="version">Version</string>
+    <string name="uptime">Uptime</string>
+    <string name="name_tree_entries">NameTree entries</string>
+    <string name="fib_entries">FIB entries</string>
+    <string name="pit_entries">PIT Entries</string>
+    <string name="measurement_entries">Measurement entries</string>
+    <string name="cs_entries">CS entries</string>
+    <string name="in_interests">In interests</string>
+    <string name="out_interests">Out interests</string>
+    <string name="in_data">In data</string>
+    <string name="out_data">Out data</string>
 
     <string-array name="pref_sync_face_titles">
         <item>localhost</item>
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 08a8a5c..f851cec 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -58,4 +58,25 @@
         <item name="android:layout_gravity">right</item>
     </style>
 
+    <style name="main_fragment_linear_layout">
+        <item name="android:orientation">horizontal</item>
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+    </style>
+
+    <style name="main_fragment_list_title">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
+        <item name="android:textColor">@android:color/primary_text_light</item>
+    </style>
+
+    <style name="main_fragment_list_value">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
+        <item name="android:gravity">right</item>
+        <item name="android:textColor">@android:color/secondary_text_dark</item>
+        <item name="android:layout_gravity">right</item>
+    </style>
 </resources>
