diff --git a/app/src/main/java/net/named_data/nfd/service/NfdService.java b/app/src/main/java/net/named_data/nfd/service/NfdService.java
index 5ab0d40..6e28f47 100644
--- a/app/src/main/java/net/named_data/nfd/service/NfdService.java
+++ b/app/src/main/java/net/named_data/nfd/service/NfdService.java
@@ -153,7 +153,7 @@
 
     serviceStartNfd();
     createPermanentFaceUriAndRoute();
-    connectToNeareastHub();
+    connectToNearestHub();
 
     // Service is restarted when killed.
     // Pending intents delivered; null intent redelivered otherwise.
@@ -244,17 +244,17 @@
     }
   }
 
-  private void connectToNeareastHub() {
+  private void connectToNearestHub() {
     final long checkInterval = 1000;
     if (isNfdRunning()) {
-      G.Log(TAG, "connectToNeareastHub: NFD is running, start executing task.");
+      G.Log(TAG, "connectToNearestHub: NFD is running, start executing task.");
       new ConnectNearestHubAsyncTask(getApplicationContext()).execute();
     } else {
-      G.Log(TAG, "connectToNeareastHub: NFD is not started yet, delay " + String.valueOf(checkInterval) + " ms.");
+      G.Log(TAG, "connectToNearestHub: NFD is not started yet, delay " + String.valueOf(checkInterval) + " ms.");
       m_handler.postDelayed(new Runnable() {
         @Override
         public void run() {
-          connectToNeareastHub();
+          connectToNearestHub();
         }
       }, checkInterval);
     }
diff --git a/app/src/main/java/net/named_data/nfd/utils/SharedPreferencesManager.java b/app/src/main/java/net/named_data/nfd/utils/SharedPreferencesManager.java
index 7e4addb..0f6a2e1 100644
--- a/app/src/main/java/net/named_data/nfd/utils/SharedPreferencesManager.java
+++ b/app/src/main/java/net/named_data/nfd/utils/SharedPreferencesManager.java
@@ -34,7 +34,7 @@
   private static final String PERMANENT_FACEURI = "permanentFaceUri";
   private static final String PERMANENT_ROUTE = "permanentRoute";
   private static final String PERMANENT_FACEID = "permanentFaceId";
-  private static final String CONNECT_NEAREAST_HUB = "connectNeareastHub";
+  private static final String CONNECT_NEAREST_HUB = "connectNearestHub";
   private static final String ENABLE_UNSOLICITED_CACHING = "enableUnsolicitedCaching";
   private static final String PREFIX_FACEURI_DELIMITER = "\t";
   // We need to cache permanent face IDs in order to display whether a face is permanent face or not.
@@ -170,13 +170,13 @@
   @SuppressWarnings("deprecation")
   public static void setConnectNearestHubAutomatically(Context context, boolean isOn) {
     SharedPreferences setting = context.getSharedPreferences(PREFS_NAME, Context.MODE_MULTI_PROCESS);
-    setting.edit().putBoolean(CONNECT_NEAREAST_HUB, isOn).commit();
+    setting.edit().putBoolean(CONNECT_NEAREST_HUB, isOn).commit();
   }
 
   @SuppressWarnings("deprecation")
   public static boolean getConnectNearestHubAutomatically(Context context) {
     SharedPreferences setting = context.getSharedPreferences(PREFS_NAME, Context.MODE_MULTI_PROCESS);
-    return setting.getBoolean(CONNECT_NEAREAST_HUB, false);
+    return setting.getBoolean(CONNECT_NEAREST_HUB, false);
   }
 
   @SuppressWarnings("deprecation")
