diff --git a/app/build.gradle b/app/build.gradle
index 86267a6..2a2b70c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -136,8 +136,8 @@
     compile 'net.named-data:jndn:0.4'
     compile 'net.named-data.jndn-xx:jndn-xx-util:0.0.1'
 
-    compile 'com.intel.jndn.utils:jndn-utils:0.9.5'
-    compile 'com.intel.jndn.management:jndn-management:0.9.5'
+    compile 'com.intel.jndn.utils:jndn-utils:0.9.7'
+    compile 'com.intel.jndn.management:jndn-management:0.9.7'
     compile 'com.google.protobuf:protobuf-java:2.6.1'
 
     compile 'joda-time:joda-time:2.7'
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>
