From d79f797558328f38ed0947d1939059b0b7b85efd Mon Sep 17 00:00:00 2001
From: str4d <str4d@mail.i2p>
Date: Fri, 6 Dec 2013 07:56:09 +0000
Subject: [PATCH] Reorganized source files by section instead of by type

---
 AndroidManifest.xml.in                        | 60 +++++++++----------
 res/xml/settings_headers.xml                  |  8 +--
 res/xml/settings_headers_legacy.xml           |  8 +--
 .../{activity => }/TunnelDetailActivity.java  |  5 +-
 .../{fragment => }/TunnelDetailFragment.java  |  3 +-
 .../i2ptunnel/{loader => }/TunnelEntry.java   |  2 +-
 .../{adapter => }/TunnelEntryAdapter.java     |  3 +-
 .../{loader => }/TunnelEntryLoader.java       |  2 +-
 .../{activity => }/TunnelListActivity.java    |  6 +-
 .../{fragment => }/TunnelListFragment.java    | 12 ++--
 .../{activity => }/TunnelWizardActivity.java  |  3 +-
 .../{activity => }/TunnelWizardModel.java     |  2 +-
 .../router/{activity => }/HelpActivity.java   |  3 +-
 .../{activity => }/I2PActivityBase.java       | 16 +++--
 .../{fragment => }/I2PFragmentBase.java       |  2 +-
 .../router/{activity => }/InitActivities.java |  2 +-
 .../{activity => }/LicenseActivity.java       |  3 +-
 .../{fragment => }/LicenseFragment.java       |  2 +-
 .../router/{activity => }/MainActivity.java   |  4 +-
 .../router/{fragment => }/MainFragment.java   |  4 +-
 .../router/{fragment => }/NewsFragment.java   |  3 +-
 .../{activity => }/SettingsActivity.java      |  2 +-
 .../{fragment => }/TextResourceDialog.java    |  2 +-
 .../router/{fragment => }/VersionDialog.java  |  4 +-
 .../{loader => addressbook}/AddressEntry.java |  2 +-
 .../AddressEntryAdapter.java                  |  3 +-
 .../AddressEntryLoader.java                   |  2 +-
 .../AddressbookActivity.java                  |  8 ++-
 .../AddressbookAddWizardActivity.java         |  3 +-
 .../AddressbookAddWizardModel.java            |  2 +-
 .../AddressbookFragment.java                  | 14 ++---
 .../AddressbookSettingsActivity.java          |  2 +-
 .../router/{activity => log}/LogActivity.java |  5 +-
 .../router/{adapter => log}/LogAdapter.java   |  2 +-
 .../{activity => log}/LogDetailActivity.java  |  4 +-
 .../{fragment => log}/LogDetailFragment.java  |  3 +-
 .../router/{fragment => log}/LogFragment.java |  4 +-
 .../router/{loader => log}/LogLoader.java     |  2 +-
 .../{activity => netdb}/NetDbActivity.java    |  7 +--
 .../NetDbDetailActivity.java                  |  5 +-
 .../NetDbDetailFragment.java                  |  6 +-
 .../router/{loader => netdb}/NetDbEntry.java  |  2 +-
 .../{adapter => netdb}/NetDbEntryAdapter.java |  3 +-
 .../{loader => netdb}/NetDbEntryLoader.java   |  2 +-
 .../NetDbListFragment.java                    |  9 ++-
 .../{loader => netdb}/NetDbStatsLoader.java   |  2 +-
 .../NetDbSummaryPagerFragment.java            |  4 +-
 .../NetDbSummaryTableFragment.java            |  2 +-
 .../android/router/receiver/I2PReceiver.java  |  2 +-
 .../{binder => service}/RouterBinder.java     |  3 +-
 .../android/router/service/RouterService.java |  1 -
 .../i2p/android/router/service/StatusBar.java |  2 +-
 .../{activity => stats}/PeersActivity.java    |  4 +-
 .../{fragment => stats}/PeersFragment.java    |  5 +-
 .../RateGraphActivity.java                    |  4 +-
 .../RateGraphFragment.java                    |  3 +-
 .../{fragment => web}/I2PWebViewClient.java   |  6 +-
 .../router/{activity => web}/WebActivity.java |  4 +-
 .../router/{fragment => web}/WebFragment.java |  4 +-
 .../android/wizard/model/ModelCallbacks.java  |  2 +-
 .../wizard/ui/I2PDestinationFragment.java     |  2 +-
 61 files changed, 143 insertions(+), 158 deletions(-)
 rename src/net/i2p/android/i2ptunnel/{activity => }/TunnelDetailActivity.java (83%)
 rename src/net/i2p/android/i2ptunnel/{fragment => }/TunnelDetailFragment.java (98%)
 rename src/net/i2p/android/i2ptunnel/{loader => }/TunnelEntry.java (99%)
 rename src/net/i2p/android/i2ptunnel/{adapter => }/TunnelEntryAdapter.java (94%)
 rename src/net/i2p/android/i2ptunnel/{loader => }/TunnelEntryLoader.java (99%)
 rename src/net/i2p/android/i2ptunnel/{activity => }/TunnelListActivity.java (95%)
 rename src/net/i2p/android/i2ptunnel/{fragment => }/TunnelListFragment.java (95%)
 rename src/net/i2p/android/i2ptunnel/{activity => }/TunnelWizardActivity.java (94%)
 rename src/net/i2p/android/i2ptunnel/{activity => }/TunnelWizardModel.java (99%)
 rename src/net/i2p/android/router/{activity => }/HelpActivity.java (94%)
 rename src/net/i2p/android/router/{activity => }/I2PActivityBase.java (96%)
 rename src/net/i2p/android/router/{fragment => }/I2PFragmentBase.java (98%)
 rename src/net/i2p/android/router/{activity => }/InitActivities.java (99%)
 rename src/net/i2p/android/router/{activity => }/LicenseActivity.java (86%)
 rename src/net/i2p/android/router/{fragment => }/LicenseFragment.java (97%)
 rename src/net/i2p/android/router/{activity => }/MainActivity.java (95%)
 rename src/net/i2p/android/router/{fragment => }/MainFragment.java (99%)
 rename src/net/i2p/android/router/{fragment => }/NewsFragment.java (97%)
 rename src/net/i2p/android/router/{activity => }/SettingsActivity.java (99%)
 rename src/net/i2p/android/router/{fragment => }/TextResourceDialog.java (98%)
 rename src/net/i2p/android/router/{fragment => }/VersionDialog.java (97%)
 rename src/net/i2p/android/router/{loader => addressbook}/AddressEntry.java (90%)
 rename src/net/i2p/android/router/{adapter => addressbook}/AddressEntryAdapter.java (92%)
 rename src/net/i2p/android/router/{loader => addressbook}/AddressEntryLoader.java (99%)
 rename src/net/i2p/android/router/{activity => addressbook}/AddressbookActivity.java (94%)
 rename src/net/i2p/android/router/{activity => addressbook}/AddressbookAddWizardActivity.java (94%)
 rename src/net/i2p/android/router/{activity => addressbook}/AddressbookAddWizardModel.java (96%)
 rename src/net/i2p/android/router/{fragment => addressbook}/AddressbookFragment.java (94%)
 rename src/net/i2p/android/router/{activity => addressbook}/AddressbookSettingsActivity.java (98%)
 rename src/net/i2p/android/router/{activity => log}/LogActivity.java (95%)
 rename src/net/i2p/android/router/{adapter => log}/LogAdapter.java (92%)
 rename src/net/i2p/android/router/{activity => log}/LogDetailActivity.java (86%)
 rename src/net/i2p/android/router/{fragment => log}/LogDetailFragment.java (92%)
 rename src/net/i2p/android/router/{fragment => log}/LogFragment.java (97%)
 rename src/net/i2p/android/router/{loader => log}/LogLoader.java (99%)
 rename src/net/i2p/android/router/{activity => netdb}/NetDbActivity.java (95%)
 rename src/net/i2p/android/router/{activity => netdb}/NetDbDetailActivity.java (90%)
 rename src/net/i2p/android/router/{fragment => netdb}/NetDbDetailFragment.java (98%)
 rename src/net/i2p/android/router/{loader => netdb}/NetDbEntry.java (98%)
 rename src/net/i2p/android/router/{adapter => netdb}/NetDbEntryAdapter.java (95%)
 rename src/net/i2p/android/router/{loader => netdb}/NetDbEntryLoader.java (99%)
 rename src/net/i2p/android/router/{fragment => netdb}/NetDbListFragment.java (96%)
 rename src/net/i2p/android/router/{loader => netdb}/NetDbStatsLoader.java (99%)
 rename src/net/i2p/android/router/{fragment => netdb}/NetDbSummaryPagerFragment.java (97%)
 rename src/net/i2p/android/router/{fragment => netdb}/NetDbSummaryTableFragment.java (98%)
 rename src/net/i2p/android/router/{binder => service}/RouterBinder.java (77%)
 rename src/net/i2p/android/router/{activity => stats}/PeersActivity.java (92%)
 rename src/net/i2p/android/router/{fragment => stats}/PeersFragment.java (96%)
 rename src/net/i2p/android/router/{activity => stats}/RateGraphActivity.java (97%)
 rename src/net/i2p/android/router/{fragment => stats}/RateGraphFragment.java (98%)
 rename src/net/i2p/android/router/{fragment => web}/I2PWebViewClient.java (99%)
 rename src/net/i2p/android/router/{activity => web}/WebActivity.java (89%)
 rename src/net/i2p/android/router/{fragment => web}/WebFragment.java (98%)

diff --git a/AndroidManifest.xml.in b/AndroidManifest.xml.in
index 5a61453c6..a4919d21c 100644
--- a/AndroidManifest.xml.in
+++ b/AndroidManifest.xml.in
@@ -19,7 +19,7 @@
                   android:icon="@drawable/ic_launcher_itoopie" />
         <provider android:name=".provider.CacheProvider"
                   android:authorities="net.i2p.android.router" />
-        <activity android:name=".activity.MainActivity"
+        <activity android:name=".MainActivity"
                   android:label="@string/app_name"
                   android:icon="@drawable/ic_launcher_itoopie"
                   android:launchMode="singleTop" >
@@ -28,19 +28,19 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-        <activity android:name=".activity.NewsActivity"
+        <activity android:name=".NewsActivity"
                   android:label="I2P News"
                   android:configChanges="orientation|keyboardHidden" >
         </activity>
-        <activity android:name=".activity.HelpActivity"
+        <activity android:name=".HelpActivity"
                   android:label="Help"
-                  android:parentActivityName=".activity.MainActivity" >
+                  android:parentActivityName=".MainActivity" >
         </activity>
-        <activity android:name=".activity.LicenseActivity"
+        <activity android:name=".LicenseActivity"
                   android:label="I2P License Information"
-                  android:parentActivityName=".activity.HelpActivity" >
+                  android:parentActivityName=".HelpActivity" >
         </activity>
-        <activity android:name=".activity.WebActivity"
+        <activity android:name=".web.WebActivity"
                   android:label="I2P Web Browser"
                   android:configChanges="orientation|keyboardHidden" >
             <intent-filter>
@@ -50,16 +50,16 @@
                 <data android:host="*.i2p" android:scheme="http" />
             </intent-filter>
         </activity>
-        <activity android:name=".activity.SettingsActivity"
+        <activity android:name=".SettingsActivity"
                   android:label="I2P Settings"
-                  android:parentActivityName=".activity.MainActivity" >
+                  android:parentActivityName=".MainActivity" >
         </activity>
-        <activity android:name=".activity.AddressbookSettingsActivity"
+        <activity android:name=".addressbook.AddressbookSettingsActivity"
                   android:label="I2P Addressbook Settings"
-                  android:parentActivityName=".activity.AddressbookActivity"
+                  android:parentActivityName=".addressbook.AddressbookActivity"
                   android:launchMode="singleTop" >
         </activity>
-        <activity android:name=".activity.AddressbookActivity"
+        <activity android:name=".addressbook.AddressbookActivity"
                   android:label="Addressbook"
                   android:launchMode="singleTop" >
             <intent-filter>
@@ -72,46 +72,46 @@
             <meta-data android:name="android.app.searchable"
                        android:resource="@xml/searchable_addressbook"/>
         </activity>
-        <activity android:name=".activity.AddressbookAddWizardActivity"
+        <activity android:name=".addressbook.AddressbookAddWizardActivity"
                   android:label="Add new Destination"
-                  android:parentActivityName=".activity.AddressbookActivity" >
+                  android:parentActivityName=".addressbook.AddressbookActivity" >
         </activity>
-        <activity android:name="net.i2p.android.i2ptunnel.activity.TunnelListActivity"
+        <activity android:name="net.i2p.android.i2ptunnel.TunnelListActivity"
                   android:label="I2PTunnel"
                   android:launchMode="singleTop" >
         </activity>
-        <activity android:name="net.i2p.android.i2ptunnel.activity.TunnelDetailActivity"
+        <activity android:name="net.i2p.android.i2ptunnel.TunnelDetailActivity"
                   android:label="I2PTunnel"
-                  android:parentActivityName="net.i2p.android.i2ptunnel.activity.TunnelListActivity" >
+                  android:parentActivityName="net.i2p.android.i2ptunnel.TunnelListActivity" >
         </activity>
-        <activity android:name="net.i2p.android.i2ptunnel.activity.TunnelWizardActivity"
+        <activity android:name="net.i2p.android.i2ptunnel.TunnelWizardActivity"
                   android:label="Tunnel Creation Wizard"
-                  android:parentActivityName="net.i2p.android.i2ptunnel.activity.TunnelListActivity" >
+                  android:parentActivityName="net.i2p.android.i2ptunnel.TunnelListActivity" >
         </activity>
-        <activity android:name=".activity.LogActivity"
+        <activity android:name=".log.LogActivity"
                   android:label="I2P Logs"
-                  android:parentActivityName=".activity.MainActivity" >
+                  android:parentActivityName=".MainActivity" >
         </activity>
-        <activity android:name=".activity.LogDetailActivity"
+        <activity android:name=".log.LogDetailActivity"
                   android:label="Log Entry"
-                  android:parentActivityName=".activity.LogActivity" >
+                  android:parentActivityName=".log.LogActivity" >
         </activity>
-        <activity android:name=".activity.RateGraphActivity"
+        <activity android:name=".stats.RateGraphActivity"
                   android:label="Rate Graph"
-                  android:parentActivityName=".activity.MainActivity" >
+                  android:parentActivityName=".MainActivity" >
         </activity>
-        <activity android:name=".activity.PeersActivity"
+        <activity android:name=".stats.PeersActivity"
                   android:label="I2P Peers and Transport Status"
                   android:configChanges="orientation|keyboardHidden"
                   android:launchMode="singleTop" >
         </activity>
-        <activity android:name=".activity.NetDbActivity"
+        <activity android:name=".netdb.NetDbActivity"
                   android:label="NetDB"
-                  android:parentActivityName=".activity.MainActivity" >
+                  android:parentActivityName=".MainActivity" >
         </activity>
-        <activity android:name=".activity.NetDbDetailActivity"
+        <activity android:name=".netdb.NetDbDetailActivity"
                   android:label="NetDB Detail"
-                  android:parentActivityName=".activity.NetDbActivity" >
+                  android:parentActivityName=".netdb.NetDbActivity" >
         </activity>
     </application>
 </manifest>
diff --git a/res/xml/settings_headers.xml b/res/xml/settings_headers.xml
index 48268ff97..0c66f647b 100644
--- a/res/xml/settings_headers.xml
+++ b/res/xml/settings_headers.xml
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
     <header
-        android:fragment="net.i2p.android.router.activity.SettingsActivity$SettingsFragment"
+        android:fragment="net.i2p.android.router.SettingsActivity$SettingsFragment"
         android:title="@string/settings_label_bandwidth_net">
         <extra
             android:name="settings"
             android:value="net" />
     </header>
     <header
-        android:fragment="net.i2p.android.router.activity.SettingsActivity$SettingsFragment"
+        android:fragment="net.i2p.android.router.SettingsActivity$SettingsFragment"
         android:title="@string/label_graphs">
         <extra
             android:name="settings"
@@ -18,10 +18,10 @@
         android:title="@string/label_addressbook">
         <intent
             android:targetPackage="net.i2p.android.router"
-            android:targetClass="net.i2p.android.router.activity.AddressbookSettingsActivity" />
+            android:targetClass="net.i2p.android.router.addressbook.AddressbookSettingsActivity" />
     </header>
     <header
-        android:fragment="net.i2p.android.router.activity.SettingsActivity$SettingsFragment"
+        android:fragment="net.i2p.android.router.SettingsActivity$SettingsFragment"
         android:title="@string/settings_label_advanced">
         <extra
             android:name="settings"
diff --git a/res/xml/settings_headers_legacy.xml b/res/xml/settings_headers_legacy.xml
index 3f5ac1bd0..1fe15755b 100644
--- a/res/xml/settings_headers_legacy.xml
+++ b/res/xml/settings_headers_legacy.xml
@@ -3,24 +3,24 @@
     <Preference android:title="@string/settings_label_bandwidth_net">
         <intent
             android:targetPackage="net.i2p.android.router"
-            android:targetClass="net.i2p.android.router.activity.SettingsActivity"
+            android:targetClass="net.i2p.android.router.SettingsActivity"
             android:action="net.i2p.android.router.PREFS_NET" />
     </Preference>
     <Preference android:title="@string/label_graphs">
         <intent
             android:targetPackage="net.i2p.android.router"
-            android:targetClass="net.i2p.android.router.activity.SettingsActivity"
+            android:targetClass="net.i2p.android.router.SettingsActivity"
             android:action="net.i2p.android.router.PREFS_GRAPHS" />
     </Preference>
     <Preference android:title="@string/label_addressbook">
         <intent
             android:targetPackage="net.i2p.android.router"
-            android:targetClass="net.i2p.android.router.activity.AddressbookSettingsActivity" />
+            android:targetClass="net.i2p.android.router.addressbook.AddressbookSettingsActivity" />
     </Preference>
     <Preference android:title="@string/settings_label_advanced">
         <intent
             android:targetPackage="net.i2p.android.router"
-            android:targetClass="net.i2p.android.router.activity.SettingsActivity"
+            android:targetClass="net.i2p.android.router.SettingsActivity"
             android:action="net.i2p.android.router.PREFS_ADVANCED" />
     </Preference>
 </PreferenceScreen>
diff --git a/src/net/i2p/android/i2ptunnel/activity/TunnelDetailActivity.java b/src/net/i2p/android/i2ptunnel/TunnelDetailActivity.java
similarity index 83%
rename from src/net/i2p/android/i2ptunnel/activity/TunnelDetailActivity.java
rename to src/net/i2p/android/i2ptunnel/TunnelDetailActivity.java
index 8965506a1..66de0894e 100644
--- a/src/net/i2p/android/i2ptunnel/activity/TunnelDetailActivity.java
+++ b/src/net/i2p/android/i2ptunnel/TunnelDetailActivity.java
@@ -1,8 +1,7 @@
-package net.i2p.android.i2ptunnel.activity;
+package net.i2p.android.i2ptunnel;
 
-import net.i2p.android.i2ptunnel.fragment.TunnelDetailFragment;
+import net.i2p.android.router.I2PActivityBase;
 import net.i2p.android.router.R;
-import net.i2p.android.router.activity.I2PActivityBase;
 import android.os.Bundle;
 
 public class TunnelDetailActivity extends I2PActivityBase implements
diff --git a/src/net/i2p/android/i2ptunnel/fragment/TunnelDetailFragment.java b/src/net/i2p/android/i2ptunnel/TunnelDetailFragment.java
similarity index 98%
rename from src/net/i2p/android/i2ptunnel/fragment/TunnelDetailFragment.java
rename to src/net/i2p/android/i2ptunnel/TunnelDetailFragment.java
index ac457fd65..23238e326 100644
--- a/src/net/i2p/android/i2ptunnel/fragment/TunnelDetailFragment.java
+++ b/src/net/i2p/android/i2ptunnel/TunnelDetailFragment.java
@@ -1,8 +1,7 @@
-package net.i2p.android.i2ptunnel.fragment;
+package net.i2p.android.i2ptunnel;
 
 import java.util.List;
 
-import net.i2p.android.i2ptunnel.loader.TunnelEntry;
 import net.i2p.android.i2ptunnel.util.TunnelUtil;
 import net.i2p.android.router.R;
 import net.i2p.i2ptunnel.TunnelControllerGroup;
diff --git a/src/net/i2p/android/i2ptunnel/loader/TunnelEntry.java b/src/net/i2p/android/i2ptunnel/TunnelEntry.java
similarity index 99%
rename from src/net/i2p/android/i2ptunnel/loader/TunnelEntry.java
rename to src/net/i2p/android/i2ptunnel/TunnelEntry.java
index a0f2913fb..ab00a64cf 100644
--- a/src/net/i2p/android/i2ptunnel/loader/TunnelEntry.java
+++ b/src/net/i2p/android/i2ptunnel/TunnelEntry.java
@@ -1,4 +1,4 @@
-package net.i2p.android.i2ptunnel.loader;
+package net.i2p.android.i2ptunnel;
 
 import java.util.List;
 
diff --git a/src/net/i2p/android/i2ptunnel/adapter/TunnelEntryAdapter.java b/src/net/i2p/android/i2ptunnel/TunnelEntryAdapter.java
similarity index 94%
rename from src/net/i2p/android/i2ptunnel/adapter/TunnelEntryAdapter.java
rename to src/net/i2p/android/i2ptunnel/TunnelEntryAdapter.java
index 87bb8df52..fe8461723 100644
--- a/src/net/i2p/android/i2ptunnel/adapter/TunnelEntryAdapter.java
+++ b/src/net/i2p/android/i2ptunnel/TunnelEntryAdapter.java
@@ -1,8 +1,7 @@
-package net.i2p.android.i2ptunnel.adapter;
+package net.i2p.android.i2ptunnel;
 
 import java.util.List;
 
-import net.i2p.android.i2ptunnel.loader.TunnelEntry;
 import net.i2p.android.router.R;
 import android.content.Context;
 import android.view.LayoutInflater;
diff --git a/src/net/i2p/android/i2ptunnel/loader/TunnelEntryLoader.java b/src/net/i2p/android/i2ptunnel/TunnelEntryLoader.java
similarity index 99%
rename from src/net/i2p/android/i2ptunnel/loader/TunnelEntryLoader.java
rename to src/net/i2p/android/i2ptunnel/TunnelEntryLoader.java
index e9fe1ae1b..226fa1231 100644
--- a/src/net/i2p/android/i2ptunnel/loader/TunnelEntryLoader.java
+++ b/src/net/i2p/android/i2ptunnel/TunnelEntryLoader.java
@@ -1,4 +1,4 @@
-package net.i2p.android.i2ptunnel.loader;
+package net.i2p.android.i2ptunnel;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/net/i2p/android/i2ptunnel/activity/TunnelListActivity.java b/src/net/i2p/android/i2ptunnel/TunnelListActivity.java
similarity index 95%
rename from src/net/i2p/android/i2ptunnel/activity/TunnelListActivity.java
rename to src/net/i2p/android/i2ptunnel/TunnelListActivity.java
index 238bc2a35..abdef3121 100644
--- a/src/net/i2p/android/i2ptunnel/activity/TunnelListActivity.java
+++ b/src/net/i2p/android/i2ptunnel/TunnelListActivity.java
@@ -1,9 +1,7 @@
-package net.i2p.android.i2ptunnel.activity;
+package net.i2p.android.i2ptunnel;
 
-import net.i2p.android.i2ptunnel.fragment.TunnelDetailFragment;
-import net.i2p.android.i2ptunnel.fragment.TunnelListFragment;
+import net.i2p.android.router.I2PActivityBase;
 import net.i2p.android.router.R;
-import net.i2p.android.router.activity.I2PActivityBase;
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v7.app.ActionBar;
diff --git a/src/net/i2p/android/i2ptunnel/fragment/TunnelListFragment.java b/src/net/i2p/android/i2ptunnel/TunnelListFragment.java
similarity index 95%
rename from src/net/i2p/android/i2ptunnel/fragment/TunnelListFragment.java
rename to src/net/i2p/android/i2ptunnel/TunnelListFragment.java
index 8eda255e3..846dbf177 100644
--- a/src/net/i2p/android/i2ptunnel/fragment/TunnelListFragment.java
+++ b/src/net/i2p/android/i2ptunnel/TunnelListFragment.java
@@ -1,16 +1,12 @@
-package net.i2p.android.i2ptunnel.fragment;
+package net.i2p.android.i2ptunnel;
 
 import java.util.List;
 
-import net.i2p.android.i2ptunnel.activity.TunnelWizardActivity;
-import net.i2p.android.i2ptunnel.adapter.TunnelEntryAdapter;
-import net.i2p.android.i2ptunnel.loader.TunnelEntry;
-import net.i2p.android.i2ptunnel.loader.TunnelEntryLoader;
 import net.i2p.android.i2ptunnel.util.TunnelConfig;
+import net.i2p.android.router.HelpActivity;
+import net.i2p.android.router.I2PFragmentBase;
 import net.i2p.android.router.R;
-import net.i2p.android.router.activity.HelpActivity;
-import net.i2p.android.router.fragment.I2PFragmentBase;
-import net.i2p.android.router.fragment.I2PFragmentBase.RouterContextProvider;
+import net.i2p.android.router.I2PFragmentBase.RouterContextProvider;
 import net.i2p.i2ptunnel.TunnelControllerGroup;
 import net.i2p.router.RouterContext;
 import android.app.Activity;
diff --git a/src/net/i2p/android/i2ptunnel/activity/TunnelWizardActivity.java b/src/net/i2p/android/i2ptunnel/TunnelWizardActivity.java
similarity index 94%
rename from src/net/i2p/android/i2ptunnel/activity/TunnelWizardActivity.java
rename to src/net/i2p/android/i2ptunnel/TunnelWizardActivity.java
index bac7e1978..d895539c0 100644
--- a/src/net/i2p/android/i2ptunnel/activity/TunnelWizardActivity.java
+++ b/src/net/i2p/android/i2ptunnel/TunnelWizardActivity.java
@@ -1,6 +1,5 @@
-package net.i2p.android.i2ptunnel.activity;
+package net.i2p.android.i2ptunnel;
 
-import net.i2p.android.i2ptunnel.fragment.TunnelListFragment;
 import net.i2p.android.router.R;
 import net.i2p.android.wizard.model.AbstractWizardModel;
 import net.i2p.android.wizard.ui.AbstractWizardActivity;
diff --git a/src/net/i2p/android/i2ptunnel/activity/TunnelWizardModel.java b/src/net/i2p/android/i2ptunnel/TunnelWizardModel.java
similarity index 99%
rename from src/net/i2p/android/i2ptunnel/activity/TunnelWizardModel.java
rename to src/net/i2p/android/i2ptunnel/TunnelWizardModel.java
index 27abeaf4a..bd4ec9dfa 100644
--- a/src/net/i2p/android/i2ptunnel/activity/TunnelWizardModel.java
+++ b/src/net/i2p/android/i2ptunnel/TunnelWizardModel.java
@@ -1,4 +1,4 @@
-package net.i2p.android.i2ptunnel.activity;
+package net.i2p.android.i2ptunnel;
 
 import android.content.Context;
 import android.content.res.Resources;
diff --git a/src/net/i2p/android/router/activity/HelpActivity.java b/src/net/i2p/android/router/HelpActivity.java
similarity index 94%
rename from src/net/i2p/android/router/activity/HelpActivity.java
rename to src/net/i2p/android/router/HelpActivity.java
index 79c853d46..ef1a65818 100644
--- a/src/net/i2p/android/router/activity/HelpActivity.java
+++ b/src/net/i2p/android/router/HelpActivity.java
@@ -1,7 +1,6 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router;
 
 import net.i2p.android.router.R;
-import net.i2p.android.router.fragment.TextResourceDialog;
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
diff --git a/src/net/i2p/android/router/activity/I2PActivityBase.java b/src/net/i2p/android/router/I2PActivityBase.java
similarity index 96%
rename from src/net/i2p/android/router/activity/I2PActivityBase.java
rename to src/net/i2p/android/router/I2PActivityBase.java
index c0f20a49a..febeac64b 100644
--- a/src/net/i2p/android/router/activity/I2PActivityBase.java
+++ b/src/net/i2p/android/router/I2PActivityBase.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router;
 
 import android.content.ComponentName;
 import android.content.Intent;
@@ -21,14 +21,18 @@ import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.ListView;
-import net.i2p.android.i2ptunnel.activity.TunnelListActivity;
+import net.i2p.android.i2ptunnel.TunnelListActivity;
 import net.i2p.android.router.R;
-import net.i2p.android.router.binder.RouterBinder;
-import net.i2p.android.router.fragment.I2PFragmentBase;
-import net.i2p.android.router.fragment.NewsFragment;
-import net.i2p.android.router.fragment.WebFragment;
+import net.i2p.android.router.addressbook.AddressbookActivity;
+import net.i2p.android.router.log.LogActivity;
+import net.i2p.android.router.netdb.NetDbActivity;
+import net.i2p.android.router.service.RouterBinder;
 import net.i2p.android.router.service.RouterService;
+import net.i2p.android.router.stats.PeersActivity;
+import net.i2p.android.router.stats.RateGraphActivity;
 import net.i2p.android.router.util.Util;
+import net.i2p.android.router.web.WebActivity;
+import net.i2p.android.router.web.WebFragment;
 import net.i2p.router.RouterContext;
 
 public abstract class I2PActivityBase extends ActionBarActivity implements
diff --git a/src/net/i2p/android/router/fragment/I2PFragmentBase.java b/src/net/i2p/android/router/I2PFragmentBase.java
similarity index 98%
rename from src/net/i2p/android/router/fragment/I2PFragmentBase.java
rename to src/net/i2p/android/router/I2PFragmentBase.java
index e9aea55d2..e2c4d673b 100644
--- a/src/net/i2p/android/router/fragment/I2PFragmentBase.java
+++ b/src/net/i2p/android/router/I2PFragmentBase.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router;
 
 import net.i2p.router.CommSystemFacade;
 import net.i2p.router.NetworkDatabaseFacade;
diff --git a/src/net/i2p/android/router/activity/InitActivities.java b/src/net/i2p/android/router/InitActivities.java
similarity index 99%
rename from src/net/i2p/android/router/activity/InitActivities.java
rename to src/net/i2p/android/router/InitActivities.java
index c7bdf0697..2347b0020 100644
--- a/src/net/i2p/android/router/activity/InitActivities.java
+++ b/src/net/i2p/android/router/InitActivities.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router;
 
 import android.content.Context;
 import android.content.res.Resources;
diff --git a/src/net/i2p/android/router/activity/LicenseActivity.java b/src/net/i2p/android/router/LicenseActivity.java
similarity index 86%
rename from src/net/i2p/android/router/activity/LicenseActivity.java
rename to src/net/i2p/android/router/LicenseActivity.java
index c65bcfda2..30164f413 100644
--- a/src/net/i2p/android/router/activity/LicenseActivity.java
+++ b/src/net/i2p/android/router/LicenseActivity.java
@@ -1,7 +1,6 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router;
 
 import net.i2p.android.router.R;
-import net.i2p.android.router.fragment.LicenseFragment;
 import android.os.Bundle;
 
 public class LicenseActivity extends I2PActivityBase {
diff --git a/src/net/i2p/android/router/fragment/LicenseFragment.java b/src/net/i2p/android/router/LicenseFragment.java
similarity index 97%
rename from src/net/i2p/android/router/fragment/LicenseFragment.java
rename to src/net/i2p/android/router/LicenseFragment.java
index 9e51d3010..d88331e03 100644
--- a/src/net/i2p/android/router/fragment/LicenseFragment.java
+++ b/src/net/i2p/android/router/LicenseFragment.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router;
 
 import android.os.Bundle;
 import android.support.v4.app.ListFragment;
diff --git a/src/net/i2p/android/router/activity/MainActivity.java b/src/net/i2p/android/router/MainActivity.java
similarity index 95%
rename from src/net/i2p/android/router/activity/MainActivity.java
rename to src/net/i2p/android/router/MainActivity.java
index 649ec2315..5b2745350 100644
--- a/src/net/i2p/android/router/activity/MainActivity.java
+++ b/src/net/i2p/android/router/MainActivity.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router;
 
 import java.io.File;
 
@@ -8,8 +8,6 @@ import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import net.i2p.android.router.R;
-import net.i2p.android.router.fragment.MainFragment;
-import net.i2p.android.router.fragment.VersionDialog;
 import net.i2p.android.router.service.RouterService;
 import net.i2p.android.router.util.Util;
 
diff --git a/src/net/i2p/android/router/fragment/MainFragment.java b/src/net/i2p/android/router/MainFragment.java
similarity index 99%
rename from src/net/i2p/android/router/fragment/MainFragment.java
rename to src/net/i2p/android/router/MainFragment.java
index 374776390..dc16c68fa 100644
--- a/src/net/i2p/android/router/fragment/MainFragment.java
+++ b/src/net/i2p/android/router/MainFragment.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router;
 
 import android.app.Activity;
 import android.graphics.drawable.AnimationDrawable;
@@ -11,8 +11,8 @@ import android.widget.ToggleButton;
 import android.widget.ImageView;
 import android.widget.TextView;
 import java.text.DecimalFormat;
+
 import net.i2p.android.router.R;
-import net.i2p.android.router.activity.I2PActivityBase;
 import net.i2p.android.router.util.Util;
 import net.i2p.data.DataHelper;
 import net.i2p.router.RouterContext;
diff --git a/src/net/i2p/android/router/fragment/NewsFragment.java b/src/net/i2p/android/router/NewsFragment.java
similarity index 97%
rename from src/net/i2p/android/router/fragment/NewsFragment.java
rename to src/net/i2p/android/router/NewsFragment.java
index 9b988d03c..fe9a81026 100644
--- a/src/net/i2p/android/router/fragment/NewsFragment.java
+++ b/src/net/i2p/android/router/NewsFragment.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router;
 
 import android.content.res.Resources;
 import android.os.Bundle;
@@ -15,6 +15,7 @@ import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
 import net.i2p.android.apps.NewsFetcher;
 import net.i2p.android.router.R;
+import net.i2p.android.router.web.I2PWebViewClient;
 
 public class NewsFragment extends I2PFragmentBase {
 
diff --git a/src/net/i2p/android/router/activity/SettingsActivity.java b/src/net/i2p/android/router/SettingsActivity.java
similarity index 99%
rename from src/net/i2p/android/router/activity/SettingsActivity.java
rename to src/net/i2p/android/router/SettingsActivity.java
index 387bf5f9e..7ba21e67b 100644
--- a/src/net/i2p/android/router/activity/SettingsActivity.java
+++ b/src/net/i2p/android/router/SettingsActivity.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router;
 
 import android.annotation.TargetApi;
 import android.content.Context;
diff --git a/src/net/i2p/android/router/fragment/TextResourceDialog.java b/src/net/i2p/android/router/TextResourceDialog.java
similarity index 98%
rename from src/net/i2p/android/router/fragment/TextResourceDialog.java
rename to src/net/i2p/android/router/TextResourceDialog.java
index e4556dd39..362055c6b 100644
--- a/src/net/i2p/android/router/fragment/TextResourceDialog.java
+++ b/src/net/i2p/android/router/TextResourceDialog.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router;
 
 import android.content.res.Resources;
 import android.os.Bundle;
diff --git a/src/net/i2p/android/router/fragment/VersionDialog.java b/src/net/i2p/android/router/VersionDialog.java
similarity index 97%
rename from src/net/i2p/android/router/fragment/VersionDialog.java
rename to src/net/i2p/android/router/VersionDialog.java
index 21898029b..d5ecdb3be 100644
--- a/src/net/i2p/android/router/fragment/VersionDialog.java
+++ b/src/net/i2p/android/router/VersionDialog.java
@@ -1,8 +1,6 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router;
 
 import net.i2p.android.router.R;
-import net.i2p.android.router.activity.I2PActivityBase;
-import net.i2p.android.router.activity.LicenseActivity;
 import net.i2p.android.router.util.Util;
 import android.app.Activity;
 import android.app.AlertDialog;
diff --git a/src/net/i2p/android/router/loader/AddressEntry.java b/src/net/i2p/android/router/addressbook/AddressEntry.java
similarity index 90%
rename from src/net/i2p/android/router/loader/AddressEntry.java
rename to src/net/i2p/android/router/addressbook/AddressEntry.java
index a5fee8b97..83a8c8b1c 100644
--- a/src/net/i2p/android/router/loader/AddressEntry.java
+++ b/src/net/i2p/android/router/addressbook/AddressEntry.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.loader;
+package net.i2p.android.router.addressbook;
 
 import net.i2p.data.Destination;
 
diff --git a/src/net/i2p/android/router/adapter/AddressEntryAdapter.java b/src/net/i2p/android/router/addressbook/AddressEntryAdapter.java
similarity index 92%
rename from src/net/i2p/android/router/adapter/AddressEntryAdapter.java
rename to src/net/i2p/android/router/addressbook/AddressEntryAdapter.java
index e383d98f3..deabd5b80 100644
--- a/src/net/i2p/android/router/adapter/AddressEntryAdapter.java
+++ b/src/net/i2p/android/router/addressbook/AddressEntryAdapter.java
@@ -1,9 +1,8 @@
-package net.i2p.android.router.adapter;
+package net.i2p.android.router.addressbook;
 
 import java.util.List;
 
 import net.i2p.android.router.R;
-import net.i2p.android.router.loader.AddressEntry;
 import android.content.Context;
 import android.view.LayoutInflater;
 import android.view.View;
diff --git a/src/net/i2p/android/router/loader/AddressEntryLoader.java b/src/net/i2p/android/router/addressbook/AddressEntryLoader.java
similarity index 99%
rename from src/net/i2p/android/router/loader/AddressEntryLoader.java
rename to src/net/i2p/android/router/addressbook/AddressEntryLoader.java
index adce6b64a..2e5f9050c 100644
--- a/src/net/i2p/android/router/loader/AddressEntryLoader.java
+++ b/src/net/i2p/android/router/addressbook/AddressEntryLoader.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.loader;
+package net.i2p.android.router.addressbook;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/net/i2p/android/router/activity/AddressbookActivity.java b/src/net/i2p/android/router/addressbook/AddressbookActivity.java
similarity index 94%
rename from src/net/i2p/android/router/activity/AddressbookActivity.java
rename to src/net/i2p/android/router/addressbook/AddressbookActivity.java
index 9716c2638..97108c7b8 100644
--- a/src/net/i2p/android/router/activity/AddressbookActivity.java
+++ b/src/net/i2p/android/router/addressbook/AddressbookActivity.java
@@ -1,8 +1,10 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router.addressbook;
 
+import net.i2p.android.router.I2PActivityBase;
 import net.i2p.android.router.R;
-import net.i2p.android.router.fragment.AddressbookFragment;
-import net.i2p.android.router.fragment.WebFragment;
+import net.i2p.android.router.I2PActivityBase.TabListener;
+import net.i2p.android.router.web.WebActivity;
+import net.i2p.android.router.web.WebFragment;
 import android.app.Activity;
 import android.app.SearchManager;
 import android.content.Context;
diff --git a/src/net/i2p/android/router/activity/AddressbookAddWizardActivity.java b/src/net/i2p/android/router/addressbook/AddressbookAddWizardActivity.java
similarity index 94%
rename from src/net/i2p/android/router/activity/AddressbookAddWizardActivity.java
rename to src/net/i2p/android/router/addressbook/AddressbookAddWizardActivity.java
index 13d605077..271baba93 100644
--- a/src/net/i2p/android/router/activity/AddressbookAddWizardActivity.java
+++ b/src/net/i2p/android/router/addressbook/AddressbookAddWizardActivity.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router.addressbook;
 
 import android.app.Activity;
 import android.app.AlertDialog;
@@ -7,7 +7,6 @@ import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v4.app.DialogFragment;
-import net.i2p.android.router.fragment.AddressbookFragment;
 import net.i2p.android.wizard.model.AbstractWizardModel;
 import net.i2p.android.wizard.ui.AbstractWizardActivity;
 
diff --git a/src/net/i2p/android/router/activity/AddressbookAddWizardModel.java b/src/net/i2p/android/router/addressbook/AddressbookAddWizardModel.java
similarity index 96%
rename from src/net/i2p/android/router/activity/AddressbookAddWizardModel.java
rename to src/net/i2p/android/router/addressbook/AddressbookAddWizardModel.java
index 14e462b17..bee608b11 100644
--- a/src/net/i2p/android/router/activity/AddressbookAddWizardModel.java
+++ b/src/net/i2p/android/router/addressbook/AddressbookAddWizardModel.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router.addressbook;
 
 import android.content.Context;
 import android.content.res.Resources;
diff --git a/src/net/i2p/android/router/fragment/AddressbookFragment.java b/src/net/i2p/android/router/addressbook/AddressbookFragment.java
similarity index 94%
rename from src/net/i2p/android/router/fragment/AddressbookFragment.java
rename to src/net/i2p/android/router/addressbook/AddressbookFragment.java
index 2906c0826..39079160d 100644
--- a/src/net/i2p/android/router/fragment/AddressbookFragment.java
+++ b/src/net/i2p/android/router/addressbook/AddressbookFragment.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router.addressbook;
 
 import android.app.Activity;
 import android.content.Intent;
@@ -14,14 +14,12 @@ import android.view.View;
 import android.widget.ListView;
 import android.widget.TextView;
 import java.util.List;
+
+import net.i2p.android.router.HelpActivity;
+import net.i2p.android.router.I2PFragmentBase;
 import net.i2p.android.router.R;
-import net.i2p.android.router.activity.AddressbookAddWizardActivity;
-import net.i2p.android.router.activity.AddressbookSettingsActivity;
-import net.i2p.android.router.activity.HelpActivity;
-import net.i2p.android.router.adapter.AddressEntryAdapter;
-import net.i2p.android.router.fragment.I2PFragmentBase.RouterContextProvider;
-import net.i2p.android.router.loader.AddressEntry;
-import net.i2p.android.router.loader.AddressEntryLoader;
+import net.i2p.android.router.I2PFragmentBase.RouterContextProvider;
+import net.i2p.android.router.I2PFragmentBase.RouterContextUser;
 import net.i2p.android.router.util.NamingServiceUtil;
 import net.i2p.client.naming.NamingService;
 import net.i2p.router.RouterContext;
diff --git a/src/net/i2p/android/router/activity/AddressbookSettingsActivity.java b/src/net/i2p/android/router/addressbook/AddressbookSettingsActivity.java
similarity index 98%
rename from src/net/i2p/android/router/activity/AddressbookSettingsActivity.java
rename to src/net/i2p/android/router/addressbook/AddressbookSettingsActivity.java
index 832f21c3c..6c3f8fd0d 100644
--- a/src/net/i2p/android/router/activity/AddressbookSettingsActivity.java
+++ b/src/net/i2p/android/router/addressbook/AddressbookSettingsActivity.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router.addressbook;
 
 import android.app.Activity;
 import android.content.Context;
diff --git a/src/net/i2p/android/router/activity/LogActivity.java b/src/net/i2p/android/router/log/LogActivity.java
similarity index 95%
rename from src/net/i2p/android/router/activity/LogActivity.java
rename to src/net/i2p/android/router/log/LogActivity.java
index ab8dfa9b0..7b4d9a30b 100644
--- a/src/net/i2p/android/router/activity/LogActivity.java
+++ b/src/net/i2p/android/router/log/LogActivity.java
@@ -1,8 +1,7 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router.log;
 
+import net.i2p.android.router.I2PActivityBase;
 import net.i2p.android.router.R;
-import net.i2p.android.router.fragment.LogDetailFragment;
-import net.i2p.android.router.fragment.LogFragment;
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v7.app.ActionBar;
diff --git a/src/net/i2p/android/router/adapter/LogAdapter.java b/src/net/i2p/android/router/log/LogAdapter.java
similarity index 92%
rename from src/net/i2p/android/router/adapter/LogAdapter.java
rename to src/net/i2p/android/router/log/LogAdapter.java
index 65428b4eb..e8d112780 100644
--- a/src/net/i2p/android/router/adapter/LogAdapter.java
+++ b/src/net/i2p/android/router/log/LogAdapter.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.adapter;
+package net.i2p.android.router.log;
 
 import java.util.List;
 
diff --git a/src/net/i2p/android/router/activity/LogDetailActivity.java b/src/net/i2p/android/router/log/LogDetailActivity.java
similarity index 86%
rename from src/net/i2p/android/router/activity/LogDetailActivity.java
rename to src/net/i2p/android/router/log/LogDetailActivity.java
index 3673e096b..67d633ae0 100644
--- a/src/net/i2p/android/router/activity/LogDetailActivity.java
+++ b/src/net/i2p/android/router/log/LogDetailActivity.java
@@ -1,8 +1,8 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router.log;
 
 import android.os.Bundle;
+import net.i2p.android.router.I2PActivityBase;
 import net.i2p.android.router.R;
-import net.i2p.android.router.fragment.LogDetailFragment;
 
 public class LogDetailActivity extends I2PActivityBase {
     LogDetailFragment mDetailFrag;
diff --git a/src/net/i2p/android/router/fragment/LogDetailFragment.java b/src/net/i2p/android/router/log/LogDetailFragment.java
similarity index 92%
rename from src/net/i2p/android/router/fragment/LogDetailFragment.java
rename to src/net/i2p/android/router/log/LogDetailFragment.java
index 87816878a..9bfa1c27c 100644
--- a/src/net/i2p/android/router/fragment/LogDetailFragment.java
+++ b/src/net/i2p/android/router/log/LogDetailFragment.java
@@ -1,5 +1,6 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router.log;
 
+import net.i2p.android.router.I2PFragmentBase;
 import net.i2p.android.router.R;
 import android.os.Bundle;
 import android.view.LayoutInflater;
diff --git a/src/net/i2p/android/router/fragment/LogFragment.java b/src/net/i2p/android/router/log/LogFragment.java
similarity index 97%
rename from src/net/i2p/android/router/fragment/LogFragment.java
rename to src/net/i2p/android/router/log/LogFragment.java
index 7e7749d55..9b7813211 100644
--- a/src/net/i2p/android/router/fragment/LogFragment.java
+++ b/src/net/i2p/android/router/log/LogFragment.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router.log;
 
 import android.app.Activity;
 import android.os.Bundle;
@@ -11,8 +11,6 @@ import android.widget.TextView;
 import java.util.List;
 import net.i2p.I2PAppContext;
 import net.i2p.android.router.R;
-import net.i2p.android.router.adapter.LogAdapter;
-import net.i2p.android.router.loader.LogLoader;
 
 public class LogFragment extends ListFragment implements
         LoaderManager.LoaderCallbacks<List<String>> {
diff --git a/src/net/i2p/android/router/loader/LogLoader.java b/src/net/i2p/android/router/log/LogLoader.java
similarity index 99%
rename from src/net/i2p/android/router/loader/LogLoader.java
rename to src/net/i2p/android/router/log/LogLoader.java
index aaddbb69e..f3750f194 100644
--- a/src/net/i2p/android/router/loader/LogLoader.java
+++ b/src/net/i2p/android/router/log/LogLoader.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.loader;
+package net.i2p.android.router.log;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/src/net/i2p/android/router/activity/NetDbActivity.java b/src/net/i2p/android/router/netdb/NetDbActivity.java
similarity index 95%
rename from src/net/i2p/android/router/activity/NetDbActivity.java
rename to src/net/i2p/android/router/netdb/NetDbActivity.java
index 6b9f12b70..ebcebab13 100644
--- a/src/net/i2p/android/router/activity/NetDbActivity.java
+++ b/src/net/i2p/android/router/netdb/NetDbActivity.java
@@ -1,9 +1,8 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router.netdb;
 
+import net.i2p.android.router.I2PActivityBase;
 import net.i2p.android.router.R;
-import net.i2p.android.router.fragment.NetDbDetailFragment;
-import net.i2p.android.router.fragment.NetDbListFragment;
-import net.i2p.android.router.fragment.NetDbSummaryPagerFragment;
+import net.i2p.android.router.I2PActivityBase.TabListener;
 import net.i2p.data.Hash;
 import android.content.Intent;
 import android.os.Bundle;
diff --git a/src/net/i2p/android/router/activity/NetDbDetailActivity.java b/src/net/i2p/android/router/netdb/NetDbDetailActivity.java
similarity index 90%
rename from src/net/i2p/android/router/activity/NetDbDetailActivity.java
rename to src/net/i2p/android/router/netdb/NetDbDetailActivity.java
index c084d23b1..60e99fc34 100644
--- a/src/net/i2p/android/router/activity/NetDbDetailActivity.java
+++ b/src/net/i2p/android/router/netdb/NetDbDetailActivity.java
@@ -1,8 +1,7 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router.netdb;
 
+import net.i2p.android.router.I2PActivityBase;
 import net.i2p.android.router.R;
-import net.i2p.android.router.fragment.NetDbDetailFragment;
-import net.i2p.android.router.fragment.NetDbListFragment;
 import net.i2p.android.router.util.Util;
 import net.i2p.data.DataFormatException;
 import net.i2p.data.Hash;
diff --git a/src/net/i2p/android/router/fragment/NetDbDetailFragment.java b/src/net/i2p/android/router/netdb/NetDbDetailFragment.java
similarity index 98%
rename from src/net/i2p/android/router/fragment/NetDbDetailFragment.java
rename to src/net/i2p/android/router/netdb/NetDbDetailFragment.java
index 0b0920c0d..291903b57 100644
--- a/src/net/i2p/android/router/fragment/NetDbDetailFragment.java
+++ b/src/net/i2p/android/router/netdb/NetDbDetailFragment.java
@@ -1,11 +1,11 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router.netdb;
 
 import java.util.Map;
 import java.util.Set;
 
+import net.i2p.android.router.I2PFragmentBase;
 import net.i2p.android.router.R;
-import net.i2p.android.router.fragment.NetDbListFragment.OnEntrySelectedListener;
-import net.i2p.android.router.loader.NetDbEntry;
+import net.i2p.android.router.netdb.NetDbListFragment.OnEntrySelectedListener;
 import net.i2p.android.router.util.Util;
 import net.i2p.data.DataFormatException;
 import net.i2p.data.DataHelper;
diff --git a/src/net/i2p/android/router/loader/NetDbEntry.java b/src/net/i2p/android/router/netdb/NetDbEntry.java
similarity index 98%
rename from src/net/i2p/android/router/loader/NetDbEntry.java
rename to src/net/i2p/android/router/netdb/NetDbEntry.java
index 4508720fe..6a889240f 100644
--- a/src/net/i2p/android/router/loader/NetDbEntry.java
+++ b/src/net/i2p/android/router/netdb/NetDbEntry.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.loader;
+package net.i2p.android.router.netdb;
 
 import java.lang.reflect.Field;
 
diff --git a/src/net/i2p/android/router/adapter/NetDbEntryAdapter.java b/src/net/i2p/android/router/netdb/NetDbEntryAdapter.java
similarity index 95%
rename from src/net/i2p/android/router/adapter/NetDbEntryAdapter.java
rename to src/net/i2p/android/router/netdb/NetDbEntryAdapter.java
index 8c9a6de11..4bd89e7b1 100644
--- a/src/net/i2p/android/router/adapter/NetDbEntryAdapter.java
+++ b/src/net/i2p/android/router/netdb/NetDbEntryAdapter.java
@@ -1,9 +1,8 @@
-package net.i2p.android.router.adapter;
+package net.i2p.android.router.netdb;
 
 import java.util.List;
 
 import net.i2p.android.router.R;
-import net.i2p.android.router.loader.NetDbEntry;
 import android.content.Context;
 import android.view.LayoutInflater;
 import android.view.View;
diff --git a/src/net/i2p/android/router/loader/NetDbEntryLoader.java b/src/net/i2p/android/router/netdb/NetDbEntryLoader.java
similarity index 99%
rename from src/net/i2p/android/router/loader/NetDbEntryLoader.java
rename to src/net/i2p/android/router/netdb/NetDbEntryLoader.java
index be9606cab..cbe2190ac 100644
--- a/src/net/i2p/android/router/loader/NetDbEntryLoader.java
+++ b/src/net/i2p/android/router/netdb/NetDbEntryLoader.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.loader;
+package net.i2p.android.router.netdb;
 
 import java.util.ArrayList;
 import java.util.Comparator;
diff --git a/src/net/i2p/android/router/fragment/NetDbListFragment.java b/src/net/i2p/android/router/netdb/NetDbListFragment.java
similarity index 96%
rename from src/net/i2p/android/router/fragment/NetDbListFragment.java
rename to src/net/i2p/android/router/netdb/NetDbListFragment.java
index 293bd8be4..3caaf6883 100644
--- a/src/net/i2p/android/router/fragment/NetDbListFragment.java
+++ b/src/net/i2p/android/router/netdb/NetDbListFragment.java
@@ -1,12 +1,11 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router.netdb;
 
 import java.util.List;
 
+import net.i2p.android.router.I2PFragmentBase;
 import net.i2p.android.router.R;
-import net.i2p.android.router.adapter.NetDbEntryAdapter;
-import net.i2p.android.router.fragment.I2PFragmentBase.RouterContextProvider;
-import net.i2p.android.router.loader.NetDbEntry;
-import net.i2p.android.router.loader.NetDbEntryLoader;
+import net.i2p.android.router.I2PFragmentBase.RouterContextProvider;
+import net.i2p.android.router.I2PFragmentBase.RouterContextUser;
 import net.i2p.data.Hash;
 import net.i2p.router.RouterContext;
 
diff --git a/src/net/i2p/android/router/loader/NetDbStatsLoader.java b/src/net/i2p/android/router/netdb/NetDbStatsLoader.java
similarity index 99%
rename from src/net/i2p/android/router/loader/NetDbStatsLoader.java
rename to src/net/i2p/android/router/netdb/NetDbStatsLoader.java
index 2c2cdb169..5b113985f 100644
--- a/src/net/i2p/android/router/loader/NetDbStatsLoader.java
+++ b/src/net/i2p/android/router/netdb/NetDbStatsLoader.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.loader;
+package net.i2p.android.router.netdb;
 
 import java.util.ArrayList;
 import java.util.Comparator;
diff --git a/src/net/i2p/android/router/fragment/NetDbSummaryPagerFragment.java b/src/net/i2p/android/router/netdb/NetDbSummaryPagerFragment.java
similarity index 97%
rename from src/net/i2p/android/router/fragment/NetDbSummaryPagerFragment.java
rename to src/net/i2p/android/router/netdb/NetDbSummaryPagerFragment.java
index 01c13e992..e494314ea 100644
--- a/src/net/i2p/android/router/fragment/NetDbSummaryPagerFragment.java
+++ b/src/net/i2p/android/router/netdb/NetDbSummaryPagerFragment.java
@@ -1,9 +1,9 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router.netdb;
 
 import java.util.List;
 
+import net.i2p.android.router.I2PFragmentBase;
 import net.i2p.android.router.R;
-import net.i2p.android.router.loader.NetDbStatsLoader;
 import net.i2p.android.router.util.Util;
 import net.i2p.util.ObjectCounter;
 import android.os.Bundle;
diff --git a/src/net/i2p/android/router/fragment/NetDbSummaryTableFragment.java b/src/net/i2p/android/router/netdb/NetDbSummaryTableFragment.java
similarity index 98%
rename from src/net/i2p/android/router/fragment/NetDbSummaryTableFragment.java
rename to src/net/i2p/android/router/netdb/NetDbSummaryTableFragment.java
index 5f68ee478..e6e4ffcc7 100644
--- a/src/net/i2p/android/router/fragment/NetDbSummaryTableFragment.java
+++ b/src/net/i2p/android/router/netdb/NetDbSummaryTableFragment.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router.netdb;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/src/net/i2p/android/router/receiver/I2PReceiver.java b/src/net/i2p/android/router/receiver/I2PReceiver.java
index 14942a6cc..0046a48b1 100644
--- a/src/net/i2p/android/router/receiver/I2PReceiver.java
+++ b/src/net/i2p/android/router/receiver/I2PReceiver.java
@@ -9,7 +9,7 @@ import android.content.ServiceConnection;
 import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
 import android.os.IBinder;
-import net.i2p.android.router.binder.RouterBinder;
+import net.i2p.android.router.service.RouterBinder;
 import net.i2p.android.router.service.RouterService;
 import net.i2p.android.router.util.Util;
 
diff --git a/src/net/i2p/android/router/binder/RouterBinder.java b/src/net/i2p/android/router/service/RouterBinder.java
similarity index 77%
rename from src/net/i2p/android/router/binder/RouterBinder.java
rename to src/net/i2p/android/router/service/RouterBinder.java
index 2fa03f97b..b8314af2e 100644
--- a/src/net/i2p/android/router/binder/RouterBinder.java
+++ b/src/net/i2p/android/router/service/RouterBinder.java
@@ -1,7 +1,6 @@
-package net.i2p.android.router.binder;
+package net.i2p.android.router.service;
 
 import android.os.Binder;
-import net.i2p.android.router.service.RouterService;
 
 public class RouterBinder extends Binder {
 
diff --git a/src/net/i2p/android/router/service/RouterService.java b/src/net/i2p/android/router/service/RouterService.java
index 4104d872d..43962de34 100644
--- a/src/net/i2p/android/router/service/RouterService.java
+++ b/src/net/i2p/android/router/service/RouterService.java
@@ -15,7 +15,6 @@ import java.util.Properties;
 import java.util.Random;
 
 import net.i2p.android.router.R;
-import net.i2p.android.router.binder.RouterBinder;
 import net.i2p.android.router.receiver.I2PReceiver;
 import net.i2p.android.router.util.Util;
 import net.i2p.data.DataHelper;
diff --git a/src/net/i2p/android/router/service/StatusBar.java b/src/net/i2p/android/router/service/StatusBar.java
index 14760a54f..c337bfde3 100644
--- a/src/net/i2p/android/router/service/StatusBar.java
+++ b/src/net/i2p/android/router/service/StatusBar.java
@@ -6,8 +6,8 @@ import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
 import android.support.v4.app.NotificationCompat;
+import net.i2p.android.router.MainActivity;
 import net.i2p.android.router.R;
-import net.i2p.android.router.activity.MainActivity;
 
 class StatusBar {
 
diff --git a/src/net/i2p/android/router/activity/PeersActivity.java b/src/net/i2p/android/router/stats/PeersActivity.java
similarity index 92%
rename from src/net/i2p/android/router/activity/PeersActivity.java
rename to src/net/i2p/android/router/stats/PeersActivity.java
index 0411224f6..c71acb087 100644
--- a/src/net/i2p/android/router/activity/PeersActivity.java
+++ b/src/net/i2p/android/router/stats/PeersActivity.java
@@ -1,7 +1,7 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router.stats;
 
+import net.i2p.android.router.I2PActivityBase;
 import net.i2p.android.router.R;
-import net.i2p.android.router.fragment.PeersFragment;
 import net.i2p.android.router.service.RouterService;
 import android.os.Bundle;
 
diff --git a/src/net/i2p/android/router/fragment/PeersFragment.java b/src/net/i2p/android/router/stats/PeersFragment.java
similarity index 96%
rename from src/net/i2p/android/router/fragment/PeersFragment.java
rename to src/net/i2p/android/router/stats/PeersFragment.java
index 77089bf58..0b5730fff 100644
--- a/src/net/i2p/android/router/fragment/PeersFragment.java
+++ b/src/net/i2p/android/router/stats/PeersFragment.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router.stats;
 
 import android.os.Bundle;
 import android.view.LayoutInflater;
@@ -10,7 +10,10 @@ import android.view.ViewGroup;
 import android.webkit.WebView;
 import java.io.IOException;
 import java.io.StringWriter;
+
+import net.i2p.android.router.I2PFragmentBase;
 import net.i2p.android.router.R;
+import net.i2p.android.router.web.I2PWebViewClient;
 import net.i2p.router.CommSystemFacade;
 
 public class PeersFragment extends I2PFragmentBase {
diff --git a/src/net/i2p/android/router/activity/RateGraphActivity.java b/src/net/i2p/android/router/stats/RateGraphActivity.java
similarity index 97%
rename from src/net/i2p/android/router/activity/RateGraphActivity.java
rename to src/net/i2p/android/router/stats/RateGraphActivity.java
index e846d62f9..b9378c5b1 100644
--- a/src/net/i2p/android/router/activity/RateGraphActivity.java
+++ b/src/net/i2p/android/router/stats/RateGraphActivity.java
@@ -1,11 +1,11 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router.stats;
 
 import java.util.Comparator;
 import java.util.List;
 import java.util.TreeSet;
 
+import net.i2p.android.router.I2PActivityBase;
 import net.i2p.android.router.R;
-import net.i2p.android.router.fragment.RateGraphFragment;
 import net.i2p.android.router.service.StatSummarizer;
 import net.i2p.android.router.service.SummaryListener;
 import net.i2p.stat.Rate;
diff --git a/src/net/i2p/android/router/fragment/RateGraphFragment.java b/src/net/i2p/android/router/stats/RateGraphFragment.java
similarity index 98%
rename from src/net/i2p/android/router/fragment/RateGraphFragment.java
rename to src/net/i2p/android/router/stats/RateGraphFragment.java
index 09c5ef92b..7447b8446 100644
--- a/src/net/i2p/android/router/fragment/RateGraphFragment.java
+++ b/src/net/i2p/android/router/stats/RateGraphFragment.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router.stats;
 
 import java.text.DecimalFormat;
 import java.text.FieldPosition;
@@ -13,6 +13,7 @@ import com.androidplot.xy.XYPlot;
 import com.androidplot.xy.XYSeries;
 import com.androidplot.xy.XYStepMode;
 
+import net.i2p.android.router.I2PFragmentBase;
 import net.i2p.android.router.R;
 import net.i2p.android.router.service.StatSummarizer;
 import net.i2p.android.router.service.SummaryListener;
diff --git a/src/net/i2p/android/router/fragment/I2PWebViewClient.java b/src/net/i2p/android/router/web/I2PWebViewClient.java
similarity index 99%
rename from src/net/i2p/android/router/fragment/I2PWebViewClient.java
rename to src/net/i2p/android/router/web/I2PWebViewClient.java
index 9b0ee06f6..b92fa2705 100644
--- a/src/net/i2p/android/router/fragment/I2PWebViewClient.java
+++ b/src/net/i2p/android/router/web/I2PWebViewClient.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router.web;
 
 import android.app.ProgressDialog;
 import android.content.DialogInterface;
@@ -24,7 +24,7 @@ import net.i2p.android.router.util.Util;
 import net.i2p.data.DataHelper;
 import net.i2p.util.EepGet;
 
-class I2PWebViewClient extends WebViewClient {
+public class I2PWebViewClient extends WebViewClient {
 
     private BGLoad _lastTask;
     /** save it here so we can dismiss it in onPageFinished() */
@@ -182,7 +182,7 @@ class I2PWebViewClient extends WebViewClient {
 
 ******/
 
-    void cancelAll() {
+    public void cancelAll() {
         BGLoad task = _lastTask;
         if (task != null) {
             Util.d("Cancelling fetches");
diff --git a/src/net/i2p/android/router/activity/WebActivity.java b/src/net/i2p/android/router/web/WebActivity.java
similarity index 89%
rename from src/net/i2p/android/router/activity/WebActivity.java
rename to src/net/i2p/android/router/web/WebActivity.java
index 0c8ef021d..21a2cbc49 100644
--- a/src/net/i2p/android/router/activity/WebActivity.java
+++ b/src/net/i2p/android/router/web/WebActivity.java
@@ -1,7 +1,7 @@
-package net.i2p.android.router.activity;
+package net.i2p.android.router.web;
 
+import net.i2p.android.router.I2PActivityBase;
 import net.i2p.android.router.R;
-import net.i2p.android.router.fragment.WebFragment;
 import android.os.Bundle;
 
 public class WebActivity extends I2PActivityBase {
diff --git a/src/net/i2p/android/router/fragment/WebFragment.java b/src/net/i2p/android/router/web/WebFragment.java
similarity index 98%
rename from src/net/i2p/android/router/fragment/WebFragment.java
rename to src/net/i2p/android/router/web/WebFragment.java
index 5aafe6f35..421ddbfd2 100644
--- a/src/net/i2p/android/router/fragment/WebFragment.java
+++ b/src/net/i2p/android/router/web/WebFragment.java
@@ -1,4 +1,4 @@
-package net.i2p.android.router.fragment;
+package net.i2p.android.router.web;
 
 import android.content.res.Resources;
 import android.net.Uri;
@@ -15,6 +15,8 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
+
+import net.i2p.android.router.I2PFragmentBase;
 import net.i2p.android.router.R;
 
 public class WebFragment extends I2PFragmentBase {
diff --git a/src/net/i2p/android/wizard/model/ModelCallbacks.java b/src/net/i2p/android/wizard/model/ModelCallbacks.java
index baddecf9b..b72e24055 100644
--- a/src/net/i2p/android/wizard/model/ModelCallbacks.java
+++ b/src/net/i2p/android/wizard/model/ModelCallbacks.java
@@ -18,7 +18,7 @@ package net.i2p.android.wizard.model;
 
 /**
  * Callback interface connecting {@link Page}, {@link AbstractWizardModel}, and model container
- * objects (e.g. {@link net.i2p.android.i2ptunnel.activity.TunnelWizardActivity}.
+ * objects (e.g. {@link net.i2p.android.i2ptunnel.TunnelWizardActivity}.
  */
 public interface ModelCallbacks {
     void onPageDataChanged(Page page);
diff --git a/src/net/i2p/android/wizard/ui/I2PDestinationFragment.java b/src/net/i2p/android/wizard/ui/I2PDestinationFragment.java
index 271e15e9f..074156af9 100644
--- a/src/net/i2p/android/wizard/ui/I2PDestinationFragment.java
+++ b/src/net/i2p/android/wizard/ui/I2PDestinationFragment.java
@@ -17,7 +17,7 @@
 package net.i2p.android.wizard.ui;
 
 import net.i2p.android.router.R;
-import net.i2p.android.router.activity.AddressbookActivity;
+import net.i2p.android.router.addressbook.AddressbookActivity;
 import net.i2p.android.wizard.model.Page;
 import net.i2p.android.wizard.model.SingleTextFieldPage;
 
-- 
GitLab