diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d2ad324..b3a7b2e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,6 +2,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="org.apache.fineract">
 
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.CAMERA"/>
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
diff --git a/app/src/main/java/org/apache/fineract/data/remote/ConnectivityInterceptor.java b/app/src/main/java/org/apache/fineract/data/remote/ConnectivityInterceptor.java
new file mode 100644
index 0000000..8c297f3
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/remote/ConnectivityInterceptor.java
@@ -0,0 +1,36 @@
+package org.apache.fineract.data.remote;
+
+import android.content.Context;
+import android.support.annotation.NonNull;
+
+import org.apache.fineract.exceptions.NoConnectivityException;
+import org.apache.fineract.utils.NetworkUtil;
+
+import java.io.IOException;
+
+import okhttp3.Interceptor;
+import okhttp3.Request;
+import okhttp3.Response;
+
+/**
+ * @author Rajan Maurya
+ *         On 23/09/17.
+ */
+public class ConnectivityInterceptor implements Interceptor {
+
+    private Context context;
+
+    public ConnectivityInterceptor(Context context) {
+        this.context = context;
+    }
+
+    @Override
+    public Response intercept(@NonNull Chain chain) throws IOException {
+        if (!NetworkUtil.isConnected(context)) {
+            throw new NoConnectivityException();
+        }
+
+        Request.Builder builder = chain.request().newBuilder();
+        return chain.proceed(builder.build());
+    }
+}
diff --git a/app/src/main/java/org/apache/fineract/data/remote/FineractOkHttpClient.java b/app/src/main/java/org/apache/fineract/data/remote/FineractOkHttpClient.java
index 2740539..a97741f 100644
--- a/app/src/main/java/org/apache/fineract/data/remote/FineractOkHttpClient.java
+++ b/app/src/main/java/org/apache/fineract/data/remote/FineractOkHttpClient.java
@@ -99,6 +99,7 @@
 
         //Interceptor :> Full Body Logger and ApiRequest Header
         builder.addInterceptor(logger);
+        builder.addInterceptor(new ConnectivityInterceptor(context));
         builder.addInterceptor(new FineractInterceptor(context));
         builder.addInterceptor(new ReceivedCookiesInterceptor(context));
 
diff --git a/app/src/main/java/org/apache/fineract/exceptions/NoConnectivityException.java b/app/src/main/java/org/apache/fineract/exceptions/NoConnectivityException.java
new file mode 100644
index 0000000..aa9ffab
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/exceptions/NoConnectivityException.java
@@ -0,0 +1,15 @@
+package org.apache.fineract.exceptions;
+
+import java.io.IOException;
+
+/**
+ * @author Rajan Maurya
+ *         On 23/09/17.
+ */
+public class NoConnectivityException extends IOException {
+
+    @Override
+    public String getMessage() {
+        return "No connectivity exception";
+    }
+}
diff --git a/app/src/main/java/org/apache/fineract/ui/adapters/CustomerAdapter.java b/app/src/main/java/org/apache/fineract/ui/adapters/CustomerAdapter.java
index a19a275..772f313 100644
--- a/app/src/main/java/org/apache/fineract/ui/adapters/CustomerAdapter.java
+++ b/app/src/main/java/org/apache/fineract/ui/adapters/CustomerAdapter.java
@@ -51,7 +51,8 @@
     @Override
     public void onBindViewHolder(ViewHolder holder, int position) {
         Customer customer = customers.get(position);
-        holder.tvCustomerName.setText(customer.getGivenName() + " " + customer.getSurname());
+        holder.tvCustomerName.setText(context.getString(R.string.customer_name,
+                customer.getGivenName(), customer.getSurname() ));
 
         if (customer.getAssignedEmployee() != null) {
             holder.tvAssignedEmployee.setText(context.getString(R.string.assigned_employee_list,
diff --git a/app/src/main/java/org/apache/fineract/ui/base/BasePresenter.java b/app/src/main/java/org/apache/fineract/ui/base/BasePresenter.java
index 1e005c7..7773559 100644
--- a/app/src/main/java/org/apache/fineract/ui/base/BasePresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/base/BasePresenter.java
@@ -2,6 +2,9 @@
 
 import android.content.Context;
 
+import org.apache.fineract.exceptions.NoConnectivityException;
+import org.apache.fineract.utils.MifosErrorUtils;
+
 /**
  * Base class that implements the Presenter interface and provides a base implementation for
  * attachView() and detachView(). It also handles keeping a reference to the mvpView that
@@ -26,6 +29,14 @@
         mvpView = null;
     }
 
+    public void showExceptionError(Throwable throwable, String errorMessage) {
+        if (throwable instanceof NoConnectivityException) {
+            getMvpView().showNoInternetConnection();
+        } else {
+            getMvpView().showError(MifosErrorUtils.getFineractError(throwable, errorMessage));
+        }
+    }
+
     public boolean isViewAttached() {
         return mvpView != null;
     }
diff --git a/app/src/main/java/org/apache/fineract/ui/base/MvpView.java b/app/src/main/java/org/apache/fineract/ui/base/MvpView.java
index 344e11e..7ba9b0c 100644
--- a/app/src/main/java/org/apache/fineract/ui/base/MvpView.java
+++ b/app/src/main/java/org/apache/fineract/ui/base/MvpView.java
@@ -8,4 +8,7 @@
  */
 public interface MvpView {
 
+    void showNoInternetConnection();
+
+    void showError(String message);
 }
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/customeractivity/CreateCustomerActivity.java b/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/customeractivity/CreateCustomerActivity.java
index 54cce3a..500cd8e 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/customeractivity/CreateCustomerActivity.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/customeractivity/CreateCustomerActivity.java
@@ -187,6 +187,13 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        stepperLayout.setNextButtonEnabled(true);
+        Toaster.show(findViewById(android.R.id.content),
+                getString(R.string.no_internet_connection));
+    }
+
+    @Override
     public void showError(String message) {
         stepperLayout.setNextButtonEnabled(true);
         Toaster.show(findViewById(android.R.id.content), message);
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/customeractivity/CreateCustomerPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/customeractivity/CreateCustomerPresenter.java
index df12c6e..7b33045 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/customeractivity/CreateCustomerPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/customeractivity/CreateCustomerPresenter.java
@@ -50,9 +50,10 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        getMvpView().showError(context.getString(R.string.error_creating_customer));
+                        showExceptionError(throwable,
+                                context.getString(R.string.error_creating_customer));
                     }
                 })
 
@@ -74,9 +75,10 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        getMvpView().showError(context.getString(R.string.error_updating_customer));
+                        showExceptionError(throwable,
+                                context.getString(R.string.error_updating_customer));
                     }
                 })
         );
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/formcustomeraddress/FormCustomerAddressFragment.java b/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/formcustomeraddress/FormCustomerAddressFragment.java
index 97a7440..0a88e94 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/formcustomeraddress/FormCustomerAddressFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/formcustomeraddress/FormCustomerAddressFragment.java
@@ -249,6 +249,11 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        Toaster.show(rootView, getString(R.string.no_internet_connection));
+    }
+
+    @Override
     public void showError(String message) {
         Toaster.show(rootView, message);
     }
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/formcustomeraddress/FormCustomerAddressPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/formcustomeraddress/FormCustomerAddressPresenter.java
index 7c274e9..0ef358a 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/formcustomeraddress/FormCustomerAddressPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/formcustomeraddress/FormCustomerAddressPresenter.java
@@ -72,8 +72,9 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
-                        getMvpView().showError(context.getString(R.string.error_loading_countries));
+                    public void onError(Throwable throwable) {
+                        showExceptionError(throwable,
+                                context.getString(R.string.error_loading_countries));
                     }
 
                     @Override
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customeractivities/CustomerActivitiesContract.java b/app/src/main/java/org/apache/fineract/ui/online/customers/customeractivities/CustomerActivitiesContract.java
index da611d3..caf71e8 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customeractivities/CustomerActivitiesContract.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customeractivities/CustomerActivitiesContract.java
@@ -24,8 +24,6 @@
         void showProgressbar();
 
         void hideProgressbar();
-
-        void showError(String message);
     }
 
     interface Presenter {
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customeractivities/CustomerActivitiesFragment.java b/app/src/main/java/org/apache/fineract/ui/online/customers/customeractivities/CustomerActivitiesFragment.java
index 796d013..052d8f0 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customeractivities/CustomerActivitiesFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customeractivities/CustomerActivitiesFragment.java
@@ -2,16 +2,12 @@
 
 import android.os.Bundle;
 import android.support.annotation.Nullable;
-import android.support.v4.content.ContextCompat;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
 
 import org.apache.fineract.R;
 import org.apache.fineract.data.models.customer.Command;
@@ -41,14 +37,8 @@
     @BindView(R.id.swipe_container)
     SwipeRefreshLayout swipeRefreshLayout;
 
-    @BindView(R.id.rl_error)
-    RelativeLayout rlError;
-
-    @BindView(R.id.iv_retry)
-    ImageView ivRetry;
-
-    @BindView(R.id.tv_error)
-    TextView tvStatus;
+    @BindView(R.id.layout_error)
+    View layoutError;
 
     @Inject
     CustomerActivitiesPresenter customerActivitiesPresenter;
@@ -84,6 +74,7 @@
             @Nullable Bundle savedInstanceState) {
         rootView = inflater.inflate(R.layout.fragment_customer_activities, container, false);
         ButterKnife.bind(this, rootView);
+        initializeFineractUIErrorHandler(getContext(), rootView);
         customerActivitiesPresenter.attachView(this);
 
         showUserInterface();
@@ -102,10 +93,10 @@
         customerActivitiesPresenter.fetchCustomerCommands(customerIdentifier);
     }
 
-    @OnClick(R.id.iv_retry)
+    @OnClick(R.id.btn_try_again)
     void onRetry() {
         rvCustomerActivities.setVisibility(View.GONE);
-        rlError.setVisibility(View.GONE);
+        layoutError.setVisibility(View.GONE);
         customerActivitiesPresenter.fetchCustomerCommands(customerIdentifier);
     }
 
@@ -130,20 +121,18 @@
     @Override
     public void showEmptyCommands(String message) {
         showRecyclerView(false);
-        tvStatus.setText(message);
-        ivRetry.setImageDrawable(ContextCompat.getDrawable(getActivity(),
-                R.drawable.ic_assignment_turned_in_black_24dp));
-        ivRetry.setEnabled(false);
+        showFineractEmptyUI(getString(R.string.activities), getString(R.string.activities),
+                R.drawable.ic_event_black_24dp);
     }
 
     @Override
     public void showRecyclerView(boolean status) {
         if (status) {
             rvCustomerActivities.setVisibility(View.VISIBLE);
-            rlError.setVisibility(View.GONE);
+            layoutError.setVisibility(View.GONE);
         } else {
             rvCustomerActivities.setVisibility(View.GONE);
-            rlError.setVisibility(View.VISIBLE);
+            layoutError.setVisibility(View.VISIBLE);
         }
     }
 
@@ -158,9 +147,15 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        showRecyclerView(false);
+        showFineractNoInternetUI();
+    }
+
+    @Override
     public void showError(String message) {
         showRecyclerView(false);
-        tvStatus.setText(message);
+        showFineractErrorUI(getString(R.string.activities));
     }
 
     @Override
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customeractivities/CustomerActivitiesPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/customers/customeractivities/CustomerActivitiesPresenter.java
index 8f5f86f..9a0513a 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customeractivities/CustomerActivitiesPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customeractivities/CustomerActivitiesPresenter.java
@@ -68,9 +68,9 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        getMvpView().showError(
+                        showExceptionError(throwable,
                                 context.getString(R.string.error_fetching_customer_activities));
                     }
 
@@ -81,4 +81,5 @@
                 })
         );
     }
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerdetails/CustomerDetailsFragment.java b/app/src/main/java/org/apache/fineract/ui/online/customers/customerdetails/CustomerDetailsFragment.java
index 8708cb3..fcf3d2a 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customerdetails/CustomerDetailsFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerdetails/CustomerDetailsFragment.java
@@ -21,7 +21,6 @@
 import org.apache.fineract.data.models.customer.Customer;
 import org.apache.fineract.ui.base.FineractBaseActivity;
 import org.apache.fineract.ui.base.FineractBaseFragment;
-import org.apache.fineract.ui.base.Toaster;
 import org.apache.fineract.ui.online.customers.createcustomer.CustomerAction;
 import org.apache.fineract.ui.online.customers.createcustomer.customeractivity.CreateCustomerActivity;
 import org.apache.fineract.ui.online.customers.customeractivities.CustomerActivitiesActivity;
@@ -89,11 +88,8 @@
     @BindView(R.id.cl_customer_details)
     CoordinatorLayout clCustomerDetails;
 
-    @BindView(R.id.rl_error)
-    RelativeLayout rlError;
-
-    @BindView(R.id.tv_error)
-    TextView tvError;
+    @BindView(R.id.layout_error)
+    View layoutError;
 
     @BindView(R.id.rl_email)
     RelativeLayout rlEmail;
@@ -140,6 +136,7 @@
         rootView = inflater.inflate(R.layout.fragment_customer_details, container, false);
         ((FineractBaseActivity) getActivity()).getActivityComponent().inject(this);
         ButterKnife.bind(this, rootView);
+        initializeFineractUIErrorHandler(getActivity(), rootView);
         customerDetailsPresenter.attachView(this);
 
         showUserInterface();
@@ -155,10 +152,10 @@
         customerDetailsPresenter.loanCustomerDetails(customerIdentifier);
     }
 
-    @OnClick(R.id.iv_retry)
+    @OnClick(R.id.btn_try_again)
     void onRetry() {
         clCustomerDetails.setVisibility(View.GONE);
-        rlError.setVisibility(View.GONE);
+        layoutError.setVisibility(View.GONE);
         customerDetailsPresenter.loanCustomerDetails(customerIdentifier);
     }
 
@@ -230,6 +227,7 @@
     public void showCustomerDetails(Customer customer) {
         this.customer = customer;
         clCustomerDetails.setVisibility(View.VISIBLE);
+        layoutError.setVisibility(View.GONE);
 
         loadCustomerPortrait();
 
@@ -321,10 +319,17 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        clCustomerDetails.setVisibility(View.GONE);
+        layoutError.setVisibility(View.VISIBLE);
+        showFineractNoInternetUI();
+    }
+
+    @Override
     public void showError(String errorMessage) {
-        rlError.setVisibility(View.VISIBLE);
-        tvError.setText(errorMessage);
-        Toaster.show(rootView, errorMessage);
+        clCustomerDetails.setVisibility(View.GONE);
+        layoutError.setVisibility(View.VISIBLE);
+        showFineractErrorUI(getString(R.string.customer_details));
     }
 
     @Override
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerdetails/CustomerDetailsPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/customers/customerdetails/CustomerDetailsPresenter.java
index 76bbefa..1f1b052 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customerdetails/CustomerDetailsPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerdetails/CustomerDetailsPresenter.java
@@ -2,6 +2,7 @@
 
 import android.content.Context;
 
+import org.apache.fineract.R;
 import org.apache.fineract.data.datamanager.DataManagerCustomer;
 import org.apache.fineract.data.models.customer.Customer;
 import org.apache.fineract.injection.ApplicationContext;
@@ -60,9 +61,10 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        getMvpView().showError("Failed to fetch customer details");
+                        showExceptionError(throwable,
+                                context.getString(R.string.error_fetching_customer_details));
                     }
 
                     @Override
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerlist/CustomersContract.java b/app/src/main/java/org/apache/fineract/ui/online/customers/customerlist/CustomersContract.java
index 57b24eb..f4464d9 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customerlist/CustomersContract.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerlist/CustomersContract.java
@@ -28,8 +28,6 @@
         void hideProgressbar();
 
         void showMessage(String message);
-
-        void showError();
     }
 
     interface Presenter {
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerlist/CustomersFragment.java b/app/src/main/java/org/apache/fineract/ui/online/customers/customerlist/CustomersFragment.java
index 58ea269..6fb9592 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customerlist/CustomersFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerlist/CustomersFragment.java
@@ -11,9 +11,6 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
 
 import org.apache.fineract.R;
 import org.apache.fineract.data.models.customer.Customer;
@@ -24,8 +21,7 @@
 import org.apache.fineract.ui.base.OnItemClickListener;
 import org.apache.fineract.ui.base.Toaster;
 import org.apache.fineract.ui.online.customers.createcustomer.CustomerAction;
-import org.apache.fineract.ui.online.customers.createcustomer.customeractivity
-        .CreateCustomerActivity;
+import org.apache.fineract.ui.online.customers.createcustomer.customeractivity.CreateCustomerActivity;
 import org.apache.fineract.ui.online.customers.customerdetails.CustomerDetailsActivity;
 import org.apache.fineract.utils.ConstantKeys;
 
@@ -53,14 +49,8 @@
     @BindView(R.id.swipe_container)
     SwipeRefreshLayout swipeRefreshLayout;
 
-    @BindView(R.id.rl_error)
-    RelativeLayout rlError;
-
-    @BindView(R.id.iv_retry)
-    ImageView ivRetry;
-
-    @BindView(R.id.tv_error)
-    TextView tvStatus;
+    @BindView(R.id.layout_error)
+    View layoutError;
 
     View rootView;
 
@@ -93,6 +83,7 @@
         rootView = inflater.inflate(R.layout.fragment_customer_list, container, false);
         ((FineractBaseActivity) getActivity()).getActivityComponent().inject(this);
         ButterKnife.bind(this, rootView);
+        initializeFineractUIErrorHandler(getActivity(), rootView);
         customerPresenter.attachView(this);
         setToolbarTitle(getString(R.string.customers));
 
@@ -117,7 +108,7 @@
         customerPresenter.fetchCustomers(0, false);
     }
 
-    @OnClick(R.id.iv_retry)
+    @OnClick(R.id.btn_try_again)
     void onRetry() {
         customerPresenter.fetchCustomers(0, false);
     }
@@ -167,18 +158,18 @@
     @Override
     public void showEmptyCustomers(String message) {
         showRecyclerView(false);
-        tvStatus.setText(getString(R.string.empty_customer_list));
-        showMessage(getString(R.string.empty_customer_list));
+        showFineractEmptyUI(getString(R.string.customers), getString(R.string.customer),
+                R.drawable.ic_customer_black_24dp);
     }
 
     @Override
     public void showRecyclerView(boolean status) {
         if (status) {
             rvCustomers.setVisibility(View.VISIBLE);
-            rlError.setVisibility(View.GONE);
+            layoutError.setVisibility(View.GONE);
         } else {
             rvCustomers.setVisibility(View.GONE);
-            rlError.setVisibility(View.VISIBLE);
+            layoutError.setVisibility(View.VISIBLE);
         }
     }
 
@@ -198,10 +189,19 @@
     }
 
     @Override
-    public void showError() {
+    public void showNoInternetConnection() {
         showRecyclerView(false);
-        tvStatus.setText(getString(R.string.error_loading_customers));
-        showMessage(getString(R.string.error_loading_customers));
+        showFineractNoInternetUI();
+    }
+
+    @Override
+    public void showError(String message) {
+        if (customerAdapter.getItemCount() != 0) {
+            showMessage(getString(R.string.error_failed_to_refresh_customers));
+        } else {
+            showRecyclerView(false);
+            showFineractErrorUI(getString(R.string.customers));
+        }
     }
 
     @Override
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerlist/CustomersPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/customers/customerlist/CustomersPresenter.java
index 0b2deb7..720660e 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customerlist/CustomersPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerlist/CustomersPresenter.java
@@ -88,7 +88,8 @@
                             getMvpView().showMessage(
                                     context.getString(R.string.error_loading_customers));
                         } else {
-                            getMvpView().showError();
+                            showExceptionError(throwable,
+                                    context.getString(R.string.error_loading_customers));
                         }
                     }
 
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerprofile/CustomerProfileActivity.java b/app/src/main/java/org/apache/fineract/ui/online/customers/customerprofile/CustomerProfileActivity.java
index 5eaffaa..bed1d69 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customerprofile/CustomerProfileActivity.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerprofile/CustomerProfileActivity.java
@@ -164,4 +164,12 @@
     public void refreshUI() {
         loadCustomerPortrait();
     }
+
+    @Override
+    public void showNoInternetConnection() {
+    }
+
+    @Override
+    public void showError(String message) {
+    }
 }
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerprofile/editcustomerprofilebottomsheet/EditCustomerProfileBottomSheet.java b/app/src/main/java/org/apache/fineract/ui/online/customers/customerprofile/editcustomerprofilebottomsheet/EditCustomerProfileBottomSheet.java
index f015460..0cca5f3 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customerprofile/editcustomerprofilebottomsheet/EditCustomerProfileBottomSheet.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerprofile/editcustomerprofilebottomsheet/EditCustomerProfileBottomSheet.java
@@ -378,4 +378,14 @@
     public void onDismiss(DialogInterface dialog) {
         super.onDismiss(dialog);
     }
+
+    @Override
+    public void showNoInternetConnection() {
+        Toaster.show(rootView, getString(R.string.no_internet_connection));
+    }
+
+    @Override
+    public void showError(String message) {
+        Toaster.show(rootView, message);
+    }
 }
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customerprofile/editcustomerprofilebottomsheet/EditCustomerProfilePresenter.java b/app/src/main/java/org/apache/fineract/ui/online/customers/customerprofile/editcustomerprofilebottomsheet/EditCustomerProfilePresenter.java
index 4d53808..056b64f 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customerprofile/editcustomerprofilebottomsheet/EditCustomerProfilePresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customerprofile/editcustomerprofilebottomsheet/EditCustomerProfilePresenter.java
@@ -72,10 +72,10 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressDialog();
-                        getMvpView().showMessage(context.getString(
-                                R.string.error_uploading_customer_portrait));
+                        showExceptionError(throwable,
+                                context.getString(R.string.error_uploading_customer_portrait));
                     }
                 })
         );
@@ -96,10 +96,10 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressDialog();
-                        getMvpView().showMessage(context.getString(
-                                R.string.error_deleting_customer_portrait));
+                        showExceptionError(throwable,
+                                context.getString(R.string.error_deleting_customer_portrait));
                     }
                 })
         );
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customertasks/CustomerTasksBottomSheetContract.java b/app/src/main/java/org/apache/fineract/ui/online/customers/customertasks/CustomerTasksBottomSheetContract.java
index 438f0ee..9d52907 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customertasks/CustomerTasksBottomSheetContract.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customertasks/CustomerTasksBottomSheetContract.java
@@ -17,8 +17,6 @@
         void showProgressbar();
 
         void hideProgressbar();
-
-        void showError();
     }
 
     interface Presenter {
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customertasks/CustomerTasksBottomSheetFragment.java b/app/src/main/java/org/apache/fineract/ui/online/customers/customertasks/CustomerTasksBottomSheetFragment.java
index f5f4715..efb6a10 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customertasks/CustomerTasksBottomSheetFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customertasks/CustomerTasksBottomSheetFragment.java
@@ -222,7 +222,13 @@
     }
 
     @Override
-    public void showError() {
+    public void showNoInternetConnection() {
+        etComment.setEnabled(true);
+        Toaster.show(rootView, getString(R.string.no_internet_connection));
+    }
+
+    @Override
+    public void showError(String message) {
         etComment.setEnabled(true);
         Toaster.show(rootView, getString(R.string.error_updating_status));
     }
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/customertasks/CustomerTasksBottomSheetPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/customers/customertasks/CustomerTasksBottomSheetPresenter.java
index f6af1b7..526ecc9 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/customertasks/CustomerTasksBottomSheetPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/customertasks/CustomerTasksBottomSheetPresenter.java
@@ -2,6 +2,7 @@
 
 import android.content.Context;
 
+import org.apache.fineract.R;
 import org.apache.fineract.data.datamanager.DataManagerCustomer;
 import org.apache.fineract.data.models.customer.Command;
 import org.apache.fineract.injection.ApplicationContext;
@@ -61,9 +62,10 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        getMvpView().showError();
+                        showExceptionError(throwable,
+                                context.getString(R.string.error_updating_status));
                     }
                 })
         );
diff --git a/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/createdepositaccount/createdepositactivity/CreateDepositActivity.java b/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/createdepositaccount/createdepositactivity/CreateDepositActivity.java
index c2d7ff6..91ed803 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/createdepositaccount/createdepositactivity/CreateDepositActivity.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/createdepositaccount/createdepositactivity/CreateDepositActivity.java
@@ -160,6 +160,14 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        stepperLayout.setNextButtonEnabled(true);
+        stepperLayout.setBackButtonEnabled(true);
+        Toaster.show(findViewById(android.R.id.content),
+                getString(R.string.no_internet_connection));
+    }
+
+    @Override
     public void showError(String message) {
         stepperLayout.setNextButtonEnabled(true);
         stepperLayout.setBackButtonEnabled(true);
diff --git a/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/createdepositaccount/createdepositactivity/CreateDepositPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/createdepositaccount/createdepositactivity/CreateDepositPresenter.java
index 2a5239b..95c796f 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/createdepositaccount/createdepositactivity/CreateDepositPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/createdepositaccount/createdepositactivity/CreateDepositPresenter.java
@@ -61,9 +61,9 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        getMvpView().showError(
+                        showExceptionError(throwable,
                                 context.getString(R.string.error_creating_deposit_account));
                     }
                 })
@@ -86,9 +86,9 @@
                             }
 
                             @Override
-                            public void onError(Throwable e) {
+                            public void onError(Throwable throwable) {
                                 getMvpView().hideProgressbar();
-                                getMvpView().showError(
+                                showExceptionError(throwable,
                                         context.getString(R.string.error_updating_deposit_account));
                             }
                         })
diff --git a/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/createdepositaccount/formdepositassignproduct/FormDepositAssignProductFragment.java b/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/createdepositaccount/formdepositassignproduct/FormDepositAssignProductFragment.java
index ad965d4..e2e262d 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/createdepositaccount/formdepositassignproduct/FormDepositAssignProductFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/createdepositaccount/formdepositassignproduct/FormDepositAssignProductFragment.java
@@ -5,8 +5,8 @@
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
-import android.support.design.widget.CoordinatorLayout;
 import android.support.design.widget.TextInputLayout;
+import android.support.v4.widget.NestedScrollView;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.StaggeredGridLayoutManager;
 import android.view.LayoutInflater;
@@ -29,8 +29,7 @@
 import org.apache.fineract.ui.base.FineractBaseActivity;
 import org.apache.fineract.ui.base.FineractBaseFragment;
 import org.apache.fineract.ui.online.depositaccounts.createdepositaccount.DepositAction;
-import org.apache.fineract.ui.online.depositaccounts.createdepositaccount
-        .DepositOnNavigationBarListener;
+import org.apache.fineract.ui.online.depositaccounts.createdepositaccount.DepositOnNavigationBarListener;
 import org.apache.fineract.ui.views.DelayAutoCompleteTextView;
 import org.apache.fineract.utils.ConstantKeys;
 
@@ -41,6 +40,7 @@
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
+import butterknife.OnClick;
 
 /**
  * @author Rajan Maurya
@@ -67,8 +67,11 @@
     @BindView(R.id.rv_beneficiary)
     RecyclerView rvBeneficiary;
 
-    @BindView(R.id.cl_deposit_assign_product)
-    CoordinatorLayout clDepositAssignProduct;
+    @BindView(R.id.ncv_deposit_assign_product)
+    NestedScrollView ncvDepositAssignProduct;
+
+    @BindView(R.id.layout_error)
+    View layoutError;
 
     @BindView(R.id.pb_search_beneficiary)
     ProgressBar pbSearchBeneficiary;
@@ -121,6 +124,7 @@
         rootView = inflater.inflate(R.layout.fragment_form_deposit_assign_product,
                 container, false);
         ButterKnife.bind(this, rootView);
+        initializeFineractUIErrorHandler(getActivity(), rootView);
         formDepositAssignProductPresenter.attachView(this);
 
         showUserInterface();
@@ -137,6 +141,13 @@
         return rootView;
     }
 
+    @OnClick(R.id.btn_try_again)
+    void onRetry() {
+        ncvDepositAssignProduct.setVisibility(View.GONE);
+        layoutError.setVisibility(View.GONE);
+        formDepositAssignProductPresenter.fetchProductDefinitions();
+    }
+
     @Override
     public VerificationError verifyStep() {
         if (productIdentifier == null) {
@@ -186,7 +197,7 @@
 
     @Override
     public void editDepositAccountDetails(DepositAccount depositAccount) {
-        clDepositAssignProduct.setVisibility(View.VISIBLE);
+        ncvDepositAssignProduct.setVisibility(View.VISIBLE);
         beneficiaryAdapter.setAllBeneficiary(depositAccount.getBeneficiaries());
         spProducts.setVisibility(View.GONE);
         tvSelectProductHeader.setVisibility(View.GONE);
@@ -195,7 +206,8 @@
 
     @Override
     public void showProductDefinitions(List<String> products) {
-        clDepositAssignProduct.setVisibility(View.VISIBLE);
+        ncvDepositAssignProduct.setVisibility(View.VISIBLE);
+        layoutError.setVisibility(View.GONE);
         this.products.addAll(products);
         productsAdapter.notifyDataSetChanged();
     }
@@ -211,8 +223,17 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        ncvDepositAssignProduct.setVisibility(View.GONE);
+        layoutError.setVisibility(View.VISIBLE);
+        showFineractNoInternetUI();
+    }
+
+    @Override
     public void showError(String message) {
-        clDepositAssignProduct.setVisibility(View.VISIBLE);
+        ncvDepositAssignProduct.setVisibility(View.GONE);
+        layoutError.setVisibility(View.VISIBLE);
+        showFineractErrorUI(getString(R.string.deposit_product));
     }
 
     @Override
diff --git a/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/createdepositaccount/formdepositassignproduct/FormDepositAssignProductPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/createdepositaccount/formdepositassignproduct/FormDepositAssignProductPresenter.java
index 2d00a10..2890234 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/createdepositaccount/formdepositassignproduct/FormDepositAssignProductPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/createdepositaccount/formdepositassignproduct/FormDepositAssignProductPresenter.java
@@ -2,6 +2,7 @@
 
 import android.content.Context;
 
+import org.apache.fineract.R;
 import org.apache.fineract.data.datamanager.DataManagerDeposit;
 import org.apache.fineract.data.models.deposit.ProductDefinition;
 import org.apache.fineract.injection.ApplicationContext;
@@ -66,9 +67,10 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        getMvpView().showError("");
+                        showExceptionError(throwable,
+                                context.getString(R.string.error_fetching_deposit_product));
                     }
 
                     @Override
diff --git a/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/depositaccountdetails/DepositAccountDetailsFragment.java b/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/depositaccountdetails/DepositAccountDetailsFragment.java
index b9696b7..179e63b 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/depositaccountdetails/DepositAccountDetailsFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/depositaccountdetails/DepositAccountDetailsFragment.java
@@ -9,7 +9,6 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
-import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import org.apache.fineract.R;
@@ -18,8 +17,7 @@
 import org.apache.fineract.ui.base.FineractBaseFragment;
 import org.apache.fineract.ui.base.Toaster;
 import org.apache.fineract.ui.online.depositaccounts.createdepositaccount.DepositAction;
-import org.apache.fineract.ui.online.depositaccounts.createdepositaccount.createdepositactivity
-        .CreateDepositActivity;
+import org.apache.fineract.ui.online.depositaccounts.createdepositaccount.createdepositactivity.CreateDepositActivity;
 import org.apache.fineract.utils.ConstantKeys;
 import org.apache.fineract.utils.StatusUtils;
 
@@ -54,11 +52,8 @@
     @BindView(R.id.tv_beneficiaries)
     TextView tvBeneficiaries;
 
-    @BindView(R.id.rl_error)
-    RelativeLayout rlError;
-
-    @BindView(R.id.tv_error)
-    TextView tvError;
+    @BindView(R.id.layout_error)
+    View layoutError;
 
     @BindView(R.id.fab_edit_deposit_account)
     FloatingActionButton fabEditDepositAccount;
@@ -93,6 +88,7 @@
         rootView = inflater.inflate(R.layout.fragment_customer_deposit_details, container, false);
         ((FineractBaseActivity) getActivity()).getActivityComponent().inject(this);
         ButterKnife.bind(this, rootView);
+        initializeFineractUIErrorHandler(getActivity(), rootView);
         customerDepositDetailsPresenter.attachView(this);
         setToolbarTitle(getString(R.string.deposit_account));
 
@@ -106,10 +102,10 @@
         customerDepositDetailsPresenter.fetchDepositAccountDetails(accountIdentifier);
     }
 
-    @OnClick(R.id.iv_retry)
+    @OnClick(R.id.btn_try_again)
     void onRetry() {
         clCustomerDepositDetails.setVisibility(View.GONE);
-        rlError.setVisibility(View.GONE);
+        layoutError.setVisibility(View.GONE);
         customerDepositDetailsPresenter.fetchDepositAccountDetails(accountIdentifier);
     }
 
@@ -126,7 +122,7 @@
     public void showDepositDetails(DepositAccount depositAccount) {
         this.depositAccount = depositAccount;
         clCustomerDepositDetails.setVisibility(View.VISIBLE);
-        rlError.setVisibility(View.GONE);
+        layoutError.setVisibility(View.GONE);
 
         StatusUtils.setDepositAccountStatusIcon(depositAccount.getState(),
                 ivDepositCurrentStatus, getActivity());
@@ -158,10 +154,17 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        clCustomerDepositDetails.setVisibility(View.GONE);
+        layoutError.setVisibility(View.VISIBLE);
+        showFineractNoInternetUI();
+    }
+
+    @Override
     public void showError(String message) {
         clCustomerDepositDetails.setVisibility(View.GONE);
-        rlError.setVisibility(View.VISIBLE);
-        tvError.setText(message);
+        layoutError.setVisibility(View.VISIBLE);
+        showFineractErrorUI(getString(R.string.deposit_account));
         Toaster.show(rootView, message);
     }
 
diff --git a/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/depositaccountdetails/DepositAccountDetailsPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/depositaccountdetails/DepositAccountDetailsPresenter.java
index 2b11a20..d1025b9 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/depositaccountdetails/DepositAccountDetailsPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/depositaccountdetails/DepositAccountDetailsPresenter.java
@@ -63,9 +63,9 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        getMvpView().showError(
+                        showExceptionError(throwable,
                                 context.getString(R.string.error_loading_deposit_details));
                     }
 
diff --git a/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/depositaccountslist/DepositAccountsFragment.java b/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/depositaccountslist/DepositAccountsFragment.java
index fdaa38d..0a5e2f4 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/depositaccountslist/DepositAccountsFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/depositaccountslist/DepositAccountsFragment.java
@@ -134,6 +134,12 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        showRecyclerView(false);
+        showFineractNoInternetUI();
+    }
+
+    @Override
     public void showError(String errorMessage) {
         showRecyclerView(false);
         showFineractErrorUI(getString(R.string.deposit_accounts));
diff --git a/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/depositaccountslist/DepositAccountsPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/depositaccountslist/DepositAccountsPresenter.java
index 1e28756..a117c5a 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/depositaccountslist/DepositAccountsPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/depositaccounts/depositaccountslist/DepositAccountsPresenter.java
@@ -67,9 +67,9 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        getMvpView().showError(
+                        showExceptionError(throwable,
                                 context.getString(R.string.error_fetching_deposit_accounts));
                     }
 
diff --git a/app/src/main/java/org/apache/fineract/ui/online/identification/createidentification/identificationactivity/CreateIdentificationActivity.java b/app/src/main/java/org/apache/fineract/ui/online/identification/createidentification/identificationactivity/CreateIdentificationActivity.java
index de6f496..ff2c2a5 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/identification/createidentification/identificationactivity/CreateIdentificationActivity.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/identification/createidentification/identificationactivity/CreateIdentificationActivity.java
@@ -167,6 +167,14 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        stepperLayout.setNextButtonEnabled(true);
+        stepperLayout.setBackButtonEnabled(true);
+        Toaster.show(findViewById(android.R.id.content),
+                getString(R.string.no_internet_connection));
+    }
+
+    @Override
     public void showError(String message) {
         stepperLayout.setNextButtonEnabled(true);
         stepperLayout.setBackButtonEnabled(true);
diff --git a/app/src/main/java/org/apache/fineract/ui/online/identification/createidentification/identificationactivity/CreateIdentificationPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/identification/createidentification/identificationactivity/CreateIdentificationPresenter.java
index 2a08bca..bcb86f5 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/identification/createidentification/identificationactivity/CreateIdentificationPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/identification/createidentification/identificationactivity/CreateIdentificationPresenter.java
@@ -63,11 +63,10 @@
                             }
 
                             @Override
-                            public void onError(Throwable e) {
+                            public void onError(Throwable throwable) {
                                 getMvpView().hideProgressbar();
-                                getMvpView().showError(
-                                        context.getString(
-                                                R.string.error_creating_identification_card));
+                                showExceptionError(throwable, context.getString(
+                                        R.string.error_creating_identification_card));
                             }
                         })
         );
@@ -90,10 +89,10 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        getMvpView().showError(
-                                context.getString(R.string.error_editing_identification_card));
+                        showExceptionError(throwable, context.getString(
+                                R.string.error_updating_identification_card));
                     }
                 })
         );
diff --git a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationdetails/IdentificationDetailsContract.java b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationdetails/IdentificationDetailsContract.java
index cb91b44..d564963 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationdetails/IdentificationDetailsContract.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationdetails/IdentificationDetailsContract.java
@@ -13,6 +13,8 @@
 
     interface View extends MvpView {
 
+        void fetchIdentificationScanCard();
+
         void showUserInterface();
 
         void initializeRecyclerView();
diff --git a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationdetails/IdentificationDetailsFragment.java b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationdetails/IdentificationDetailsFragment.java
index db69744..8288492 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationdetails/IdentificationDetailsFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationdetails/IdentificationDetailsFragment.java
@@ -13,7 +13,6 @@
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.RelativeLayout;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -26,12 +25,9 @@
 import org.apache.fineract.ui.base.FineractBaseActivity;
 import org.apache.fineract.ui.base.FineractBaseFragment;
 import org.apache.fineract.ui.online.identification.createidentification.Action;
-import org.apache.fineract.ui.online.identification.createidentification.identificationactivity
-        .CreateIdentificationActivity;
-import org.apache.fineract.ui.online.identification.uploadidentificationscan
-        .AddScanIdentificationListener;
-import org.apache.fineract.ui.online.identification.uploadidentificationscan
-        .UploadIdentificationCardBottomSheet;
+import org.apache.fineract.ui.online.identification.createidentification.identificationactivity.CreateIdentificationActivity;
+import org.apache.fineract.ui.online.identification.uploadidentificationscan.AddScanIdentificationListener;
+import org.apache.fineract.ui.online.identification.uploadidentificationscan.UploadIdentificationCardBottomSheet;
 import org.apache.fineract.ui.online.identification.viewscancard.ViewScanCardActivity;
 import org.apache.fineract.utils.ConstantKeys;
 import org.apache.fineract.utils.DateUtils;
@@ -75,11 +71,8 @@
     @BindView(R.id.rv_scans_uploaded)
     RecyclerView rvScansUploaded;
 
-    @BindView(R.id.rl_error)
-    RelativeLayout rlError;
-
-    @BindView(R.id.tv_error)
-    TextView tvError;
+    @BindView(R.id.layout_error)
+    View layoutError;
 
     @Inject
     IdentificationScanAdapter identificationScanAdapter;
@@ -120,6 +113,7 @@
         rootView = inflater.inflate(R.layout.fragment_identification_details, container, false);
         ((FineractBaseActivity) getActivity()).getActivityComponent().inject(this);
         ButterKnife.bind(this, rootView);
+        initializeFineractUIErrorHandler(getActivity(), rootView);
         identificationDetailsPresenter.attachView(this);
 
         showUserInterface();
@@ -139,24 +133,27 @@
                 getString(R.string.upload_new_identification_card_scan));
     }
 
-    @OnClick(R.id.iv_retry)
+    @OnClick(R.id.btn_try_again)
     void onRetry() {
-        identificationDetailsPresenter.fetchIdentificationScanCards(customerIdentifier,
-                identificationCard.getNumber());
+        fetchIdentificationScanCard();
     }
 
     @Override
     public void onResume() {
         super.onResume();
-        identificationDetailsPresenter.fetchIdentificationScanCards(customerIdentifier,
-                identificationCard.getNumber());
+        fetchIdentificationScanCard();
     }
 
     @Override
     public void updateScanUploadedIdentification() {
+        fetchIdentificationScanCard();
+    }
+
+    @Override
+    public void fetchIdentificationScanCard() {
         tvScansStatus.setVisibility(View.VISIBLE);
         rvScansUploaded.setVisibility(View.GONE);
-        rlError.setVisibility(View.GONE);
+        layoutError.setVisibility(View.GONE);
         identificationDetailsPresenter.fetchIdentificationScanCards(customerIdentifier,
                 identificationCard.getNumber());
     }
@@ -195,10 +192,10 @@
     public void showRecyclerView(boolean status) {
         if (status) {
             rvScansUploaded.setVisibility(View.VISIBLE);
-            rlError.setVisibility(View.GONE);
+            layoutError.setVisibility(View.GONE);
         } else {
             rvScansUploaded.setVisibility(View.GONE);
-            rlError.setVisibility(View.VISIBLE);
+            layoutError.setVisibility(View.VISIBLE);
         }
         tvScansStatus.setVisibility(View.GONE);
     }
@@ -206,8 +203,8 @@
     @Override
     public void showScansStatus(String message) {
         showRecyclerView(false);
-        rlError.getChildAt(0).setVisibility(View.GONE);
-        tvError.setText(message);
+        showFineractEmptyUI(getString(R.string.identification_card_scans),
+                getString(R.string.identification_card_scan), R.drawable.ic_description_black_24dp);
     }
 
     @Override
@@ -240,9 +237,15 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        showRecyclerView(false);
+        showFineractNoInternetUI();
+    }
+
+    @Override
     public void showError(String message) {
         showRecyclerView(false);
-        tvError.setText(message);
+        showFineractErrorUI(getString(R.string.identification_card_scans));
     }
 
     @Override
diff --git a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationdetails/IdentificationDetailsPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationdetails/IdentificationDetailsPresenter.java
index e68813b..d8dacbe 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationdetails/IdentificationDetailsPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationdetails/IdentificationDetailsPresenter.java
@@ -70,8 +70,8 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
-                        getMvpView().showError(
+                    public void onError(Throwable throwable) {
+                        showExceptionError(throwable,
                                 context.getString(R.string.error_fetching_scans));
                     }
 
diff --git a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsContract.java b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsContract.java
index 5cff8db..c38030c 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsContract.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsContract.java
@@ -23,6 +23,8 @@
 
         void showRecyclerView(boolean status);
 
+        void showEmptyIdentifications();
+
         void showMessage(String message);
     }
 
diff --git a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsFragment.java b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsFragment.java
index f8c862b..bca48e2 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsFragment.java
@@ -9,8 +9,6 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
 
 import org.apache.fineract.R;
 import org.apache.fineract.data.models.customer.identification.Identification;
@@ -20,10 +18,8 @@
 import org.apache.fineract.ui.base.OnItemClickListener;
 import org.apache.fineract.ui.base.Toaster;
 import org.apache.fineract.ui.online.identification.createidentification.Action;
-import org.apache.fineract.ui.online.identification.createidentification.identificationactivity
-        .CreateIdentificationActivity;
-import org.apache.fineract.ui.online.identification.identificationdetails
-        .IdentificationDetailsFragment;
+import org.apache.fineract.ui.online.identification.createidentification.identificationactivity.CreateIdentificationActivity;
+import org.apache.fineract.ui.online.identification.identificationdetails.IdentificationDetailsFragment;
 import org.apache.fineract.utils.ConstantKeys;
 
 import java.util.ArrayList;
@@ -48,11 +44,8 @@
     @BindView(R.id.swipe_container)
     SwipeRefreshLayout swipeRefreshLayout;
 
-    @BindView(R.id.rl_error)
-    RelativeLayout rlError;
-
-    @BindView(R.id.tv_error)
-    TextView tvError;
+    @BindView(R.id.layout_error)
+    View layoutError;
 
     @Inject
     IdentificationsPresenter identificationsPresenter;
@@ -90,6 +83,7 @@
         ((FineractBaseActivity) getActivity()).getActivityComponent().inject(this);
         identificationsPresenter.attachView(this);
         ButterKnife.bind(this, rootView);
+        initializeFineractUIErrorHandler(getActivity(), rootView);
 
         showUserInterface();
 
@@ -151,21 +145,38 @@
     public void showRecyclerView(boolean status) {
         if (status) {
             rvIdentifications.setVisibility(View.VISIBLE);
-            rlError.setVisibility(View.GONE);
+            layoutError.setVisibility(View.GONE);
         } else {
             rvIdentifications.setVisibility(View.GONE);
-            rlError.setVisibility(View.VISIBLE);
+            layoutError.setVisibility(View.VISIBLE);
         }
     }
 
     @Override
-    public void showMessage(String message) {
+    public void showEmptyIdentifications() {
         showRecyclerView(false);
-        tvError.setText(message);
+        showFineractEmptyUI(getString(R.string.identification_cards),
+                getString(R.string.identification_card), R.drawable.ic_person_outline_black_24dp);
+    }
+
+    @Override
+    public void showMessage(String message) {
         Toaster.show(rootView, message);
     }
 
     @Override
+    public void showNoInternetConnection() {
+        showRecyclerView(false);
+        showFineractNoInternetUI();
+    }
+
+    @Override
+    public void showError(String message) {
+        showRecyclerView(false);
+        showFineractErrorUI(getString(R.string.identification_cards));
+    }
+
+    @Override
     public void onItemClick(View childView, int position) {
         ((FineractBaseActivity) getActivity()).replaceFragment(
                 IdentificationDetailsFragment.newInstance(customerIdentifier,
diff --git a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsPresenter.java
index 74ba678..fa1b855 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/identification/identificationlist/IdentificationsPresenter.java
@@ -61,17 +61,16 @@
                         getMvpView().hideProgressbar();
 
                         if (identifications.size() == 0) {
-                            getMvpView().showMessage(
-                                    context.getString(R.string.empty_identification_list));
+                            getMvpView().showEmptyIdentifications();
                         } else {
                             getMvpView().showIdentification(identifications);
                         }
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        getMvpView().showMessage(
+                        showExceptionError(throwable,
                                 context.getString(R.string.error_fetching_identification_list));
                     }
 
diff --git a/app/src/main/java/org/apache/fineract/ui/online/identification/uploadidentificationscan/UploadIdentificationCardBottomSheet.java b/app/src/main/java/org/apache/fineract/ui/online/identification/uploadidentificationscan/UploadIdentificationCardBottomSheet.java
index 45c44ce..86180fa 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/identification/uploadidentificationscan/UploadIdentificationCardBottomSheet.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/identification/uploadidentificationscan/UploadIdentificationCardBottomSheet.java
@@ -215,6 +215,11 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        Toaster.show(rootView, getString(R.string.no_internet_connection));
+    }
+
+    @Override
     public void showError(String message) {
         Toaster.show(rootView, message);
     }
diff --git a/app/src/main/java/org/apache/fineract/ui/online/identification/uploadidentificationscan/UploadIdentificationCardPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/identification/uploadidentificationscan/UploadIdentificationCardPresenter.java
index 613ed4b..93b4157 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/identification/uploadidentificationscan/UploadIdentificationCardPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/identification/uploadidentificationscan/UploadIdentificationCardPresenter.java
@@ -74,9 +74,9 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressDialog();
-                        getMvpView().showError(context
+                        showExceptionError(throwable, context
                                 .getString(R.string.error_uploading_identification_scan_card));
                     }
                 })
diff --git a/app/src/main/java/org/apache/fineract/ui/online/launcher/LauncherActivity.java b/app/src/main/java/org/apache/fineract/ui/online/launcher/LauncherActivity.java
index 9e6ff2b..f36c304 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/launcher/LauncherActivity.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/launcher/LauncherActivity.java
@@ -96,4 +96,14 @@
         super.onDestroy();
         launcherPresenter.detachView();
     }
+
+    @Override
+    public void showNoInternetConnection() {
+
+    }
+
+    @Override
+    public void showError(String message) {
+
+    }
 }
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanaccountlist/LoanAccountsContract.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanaccountlist/LoanAccountsContract.java
index 0c42588..3d55a5b 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanaccountlist/LoanAccountsContract.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanaccountlist/LoanAccountsContract.java
@@ -25,8 +25,6 @@
 
         void showMessage(String message);
 
-        void showError();
-
         void showProgressbar();
 
         void hideProgressbar();
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanaccountlist/LoanAccountsFragment.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanaccountlist/LoanAccountsFragment.java
index 252b449..f9aca09 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanaccountlist/LoanAccountsFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanaccountlist/LoanAccountsFragment.java
@@ -9,8 +9,6 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
 
 import org.apache.fineract.R;
 import org.apache.fineract.data.models.loan.LoanAccount;
@@ -20,8 +18,7 @@
 import org.apache.fineract.ui.base.FineractBaseFragment;
 import org.apache.fineract.ui.base.OnItemClickListener;
 import org.apache.fineract.ui.base.Toaster;
-import org.apache.fineract.ui.online.loanaccounts.loanapplication.loanactivity
-        .LoanApplicationActivity;
+import org.apache.fineract.ui.online.loanaccounts.loanapplication.loanactivity.LoanApplicationActivity;
 import org.apache.fineract.ui.online.loanaccounts.loandetails.CustomerLoanDetailsFragment;
 import org.apache.fineract.utils.ConstantKeys;
 
@@ -47,11 +44,8 @@
     @BindView(R.id.swipe_container)
     SwipeRefreshLayout swipeRefreshLayout;
 
-    @BindView(R.id.rl_error)
-    RelativeLayout rlError;
-
-    @BindView(R.id.tv_error)
-    TextView tvErrorMessage;
+    @BindView(R.id.layout_error)
+    View layoutError;
 
     @Inject
     LoanAccountsPresenter customerLoansPresenter;
@@ -87,6 +81,7 @@
         rootView = inflater.inflate(R.layout.fragment_customer_loans, container, false);
         ((FineractBaseActivity) getActivity()).getActivityComponent().inject(this);
         ButterKnife.bind(this, rootView);
+        initializeFineractUIErrorHandler(getActivity(), rootView);
         customerLoansPresenter.attachView(this);
         setToolbarTitle(getString(R.string.loan_accounts));
 
@@ -106,8 +101,10 @@
         customerLoansPresenter.fetchCustomerLoanAccounts(customerIdentifier, 0, false);
     }
 
-    @OnClick(R.id.iv_retry)
+    @OnClick(R.id.btn_try_again)
     void onRetry() {
+        rvCustomerLoans.setVisibility(View.GONE);
+        layoutError.setVisibility(View.GONE);
         customerLoansPresenter.fetchCustomerLoanAccounts(customerIdentifier, 0, false);
     }
 
@@ -155,18 +152,18 @@
     @Override
     public void showEmptyLoanAccounts(String message) {
         showRecyclerView(false);
-        tvErrorMessage.setText(getString(R.string.empty_customer_loans));
-        showMessage(getString(R.string.empty_customer_loans));
+        showFineractEmptyUI(getString(R.string.loan_accounts), getString(R.string.loan_account),
+                R.drawable.ic_payment_black_24dp);
     }
 
     @Override
     public void showRecyclerView(boolean status) {
         if (status) {
             rvCustomerLoans.setVisibility(View.VISIBLE);
-            rlError.setVisibility(View.GONE);
+            layoutError.setVisibility(View.GONE);
         } else {
             rvCustomerLoans.setVisibility(View.GONE);
-            rlError.setVisibility(View.VISIBLE);
+            layoutError.setVisibility(View.VISIBLE);
         }
     }
 
@@ -176,10 +173,16 @@
     }
 
     @Override
-    public void showError() {
+    public void showNoInternetConnection() {
         showRecyclerView(false);
-        tvErrorMessage.setText(getString(R.string.error_loading_customer_loans));
-        showMessage(getString(R.string.error_loading_customer_loans));
+        showFineractNoInternetUI();
+    }
+
+    @Override
+    public void showError(String message) {
+        showRecyclerView(false);
+        showMessage(message);
+        showFineractErrorUI(getString(R.string.loan_accounts));
     }
 
     @Override
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanaccountlist/LoanAccountsPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanaccountlist/LoanAccountsPresenter.java
index 5a942f2..64addd0 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanaccountlist/LoanAccountsPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanaccountlist/LoanAccountsPresenter.java
@@ -6,6 +6,7 @@
 import org.apache.fineract.data.datamanager.DataManagerLoans;
 import org.apache.fineract.data.models.loan.LoanAccount;
 import org.apache.fineract.data.models.loan.LoanAccountPage;
+import org.apache.fineract.exceptions.NoConnectivityException;
 import org.apache.fineract.injection.ApplicationContext;
 import org.apache.fineract.injection.ConfigPersistent;
 import org.apache.fineract.ui.base.BasePresenter;
@@ -84,13 +85,17 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        if (loadmore) {
+                        if (loadmore && !(throwable instanceof NoConnectivityException)) {
                             getMvpView().showMessage(
                                     context.getString(R.string.error_loading_customer_loans));
+                        } else if (loadmore && (throwable instanceof NoConnectivityException)) {
+                            getMvpView().showMessage(
+                                    context.getString(R.string.no_internet_connection));
                         } else {
-                            getMvpView().showError();
+                            showExceptionError(throwable,
+                                    context.getString(R.string.error_loading_customer_loans));
                         }
                     }
 
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationActivity.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationActivity.java
index e8a75ce..5614ca6 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationActivity.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationActivity.java
@@ -74,7 +74,7 @@
         stepperLayout.setAdapter(stepAdapter, currentPosition);
         stepperLayout.setListener(this);
         stepperLayout.setOffscreenPageLimit(stepAdapter.getCount());
-        setToolbarTitle("Create new loan");
+        setToolbarTitle(getString(R.string.create_new_loan));
         showBackButton();
     }
 
@@ -129,6 +129,12 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        Toaster.show(findViewById(android.R.id.content),
+                getString(R.string.no_internet_connection));
+    }
+
+    @Override
     public void showError(String message) {
         Toaster.show(findViewById(android.R.id.content), message);
     }
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationPresenter.java
index 7069853..b4e7bac 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loanactivity/LoanApplicationPresenter.java
@@ -61,9 +61,9 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        getMvpView().showError(
+                        showExceptionError(throwable,
                                 context.getString(R.string.error_while_creating_loan));
                     }
                 })
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loancosigner/LoanCoSignerFragment.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loancosigner/LoanCoSignerFragment.java
index 7fae6ba..bebe21c 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loancosigner/LoanCoSignerFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loancosigner/LoanCoSignerFragment.java
@@ -119,6 +119,11 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        Toaster.show(rootView, getString(R.string.no_internet_connection));
+    }
+
+    @Override
     public void showError(String message) {
         Toaster.show(rootView, getString(R.string.error_loading_customers));
     }
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loancosigner/LoanCoSignerPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loancosigner/LoanCoSignerPresenter.java
index 9196a3b..7d0ded2 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loancosigner/LoanCoSignerPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loancosigner/LoanCoSignerPresenter.java
@@ -69,9 +69,10 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        getMvpView().showError(context.getString(R.string.error_loading_customers));
+                        showExceptionError(throwable,
+                                context.getString(R.string.error_loading_customers));
                     }
 
                     @Override
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsFragment.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsFragment.java
index 354cade..384df72 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsFragment.java
@@ -5,8 +5,8 @@
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
-import android.support.design.widget.CoordinatorLayout;
 import android.support.design.widget.TextInputLayout;
+import android.support.v4.widget.NestedScrollView;
 import android.support.v7.widget.AppCompatSpinner;
 import android.text.Editable;
 import android.text.TextWatcher;
@@ -54,8 +54,8 @@
 
     public static final String LOG_TAG = LoanDetailsFragment.class.getSimpleName();
 
-    @BindView(R.id.cl_loan_details)
-    CoordinatorLayout clLoanDetails;
+    @BindView(R.id.ncv_loan_details)
+    NestedScrollView ncvLoanDetails;
 
     @BindView(R.id.sp_products)
     AppCompatSpinner spProducts;
@@ -120,6 +120,9 @@
     @BindView(R.id.sp_repay_year_month)
     AppCompatSpinner spRepayYearMonth;
 
+    @BindView(R.id.layout_error)
+    View layoutError;
+
     View rootView;
 
     @Inject
@@ -170,6 +173,7 @@
             @Nullable Bundle savedInstanceState) {
         rootView = inflater.inflate(R.layout.fragment_loan_details, container, false);
         ButterKnife.bind(this, rootView);
+        initializeFineractUIErrorHandler(getActivity(), rootView);
         loanDetailsPresenter.attachView(this);
 
         showUserInterface();
@@ -179,6 +183,13 @@
         return rootView;
     }
 
+    @OnClick(R.id.btn_try_again)
+    void reloadProducts() {
+        layoutError.setVisibility(View.GONE);
+        ncvLoanDetails.setVisibility(View.GONE);
+        loanDetailsPresenter.fetchProducts();
+    }
+
     @Override
     public VerificationError verifyStep() {
         if (!validateShortName() || !validateTerm() || !validateRepay()
@@ -322,7 +333,8 @@
 
     @Override
     public void showProducts(List<String> products) {
-        clLoanDetails.setVisibility(View.VISIBLE);
+        ncvLoanDetails.setVisibility(View.VISIBLE);
+        layoutError.setVisibility(View.GONE);
         this.products.addAll(products);
         productsAdapter.notifyDataSetChanged();
     }
@@ -342,6 +354,8 @@
 
     @Override
     public void showEmptyProducts() {
+        ncvLoanDetails.setVisibility(View.VISIBLE);
+        layoutError.setVisibility(View.GONE);
         Toaster.show(rootView, getString(R.string.empty_create_loan_products), Toaster.INDEFINITE);
     }
 
@@ -356,8 +370,17 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        ncvLoanDetails.setVisibility(View.GONE);
+        layoutError.setVisibility(View.VISIBLE);
+        showFineractNoInternetUI();
+    }
+
+    @Override
     public void showError(String message) {
-        clLoanDetails.setVisibility(View.VISIBLE);
+        ncvLoanDetails.setVisibility(View.GONE);
+        layoutError.setVisibility(View.VISIBLE);
+        showFineractErrorUI(getString(R.string.products));
     }
 
     @Override
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsPresenter.java
index 44cfcc2..f293c20 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loanapplication/loandetails/LoanDetailsPresenter.java
@@ -79,9 +79,10 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        getMvpView().showError(context.getString(R.string.error_loading_products));
+                        showExceptionError(throwable,
+                                context.getString(R.string.error_loading_products));
                     }
 
                     @Override
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loandetails/CustomerLoanDetailsFragment.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loandetails/CustomerLoanDetailsFragment.java
index f31cf7a..bd4f291 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loandetails/CustomerLoanDetailsFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loandetails/CustomerLoanDetailsFragment.java
@@ -248,6 +248,13 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        ncvCustomerLoanDetails.setVisibility(View.GONE);
+        layoutError.setVisibility(View.VISIBLE);
+        showFineractNoInternetUI();
+    }
+
+    @Override
     public void showError(String message) {
         ncvCustomerLoanDetails.setVisibility(View.GONE);
         layoutError.setVisibility(View.VISIBLE);
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loandetails/CustomerLoanDetailsPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loandetails/CustomerLoanDetailsPresenter.java
index c4bfcab..a24d421 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loandetails/CustomerLoanDetailsPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/loandetails/CustomerLoanDetailsPresenter.java
@@ -62,9 +62,9 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        getMvpView().showError(
+                        showExceptionError(throwable,
                                 context.getString(R.string.error_loading_customer_loan_details));
                     }
 
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/plannedpayment/PlannedPaymentContract.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/plannedpayment/PlannedPaymentContract.java
index 7645e0e..24e9318 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/plannedpayment/PlannedPaymentContract.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/plannedpayment/PlannedPaymentContract.java
@@ -14,6 +14,8 @@
 
     interface View extends MvpView {
 
+        void fetchPlannedPayment();
+
         void showUserInterface();
 
         void showPlannedPayment(List<PlannedPayment> plannedPayments);
@@ -29,9 +31,6 @@
         void hideProgressbar();
 
         void showMessage(String message);
-
-        void showError();
-
     }
 
     interface Presenter {
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/plannedpayment/PlannedPaymentFragment.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/plannedpayment/PlannedPaymentFragment.java
index 5e75830..191df3c 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/plannedpayment/PlannedPaymentFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/plannedpayment/PlannedPaymentFragment.java
@@ -12,7 +12,6 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.CalendarView;
-import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import org.apache.fineract.R;
@@ -57,11 +56,8 @@
     @BindView(R.id.cv_planned_payment)
     CardView cvCalenderPlannedPayment;
 
-    @BindView(R.id.rl_error)
-    RelativeLayout rlError;
-
-    @BindView(R.id.tv_error)
-    TextView tvError;
+    @BindView(R.id.layout_error)
+    View layoutError;
 
     @BindView(R.id.tv_toolbar_date)
     TextView tvToolbarDate;
@@ -107,17 +103,25 @@
         rootView = inflater.inflate(R.layout.fragment_planned_payment, container, false);
         ((FineractBaseActivity) getActivity()).getActivityComponent().inject(this);
         ButterKnife.bind(this, rootView);
+        initializeFineractUIErrorHandler(getActivity(), rootView);
         plannedPaymentPresenter.attachView(this);
 
         showUserInterface();
 
-        plannedPaymentPresenter.fetchPlannedPayment(productIdentifier, caseIdentifier, 0,
-                initialDisbursalDate, false);
+        fetchPlannedPayment();
 
         return rootView;
     }
 
     @Override
+    public void fetchPlannedPayment() {
+        rvPlannedPayment.setVisibility(View.GONE);
+        layoutError.setVisibility(View.GONE);
+        plannedPaymentPresenter.fetchPlannedPayment(productIdentifier, caseIdentifier, 0,
+                initialDisbursalDate, false);
+    }
+
+    @Override
     public void showUserInterface() {
         //TODO fix null pointer exception in toolbar
         if (toolbar != null) {
@@ -159,10 +163,9 @@
         }
     }
 
-    @OnClick(R.id.iv_retry)
+    @OnClick(R.id.btn_try_again)
     void onRetry() {
-        plannedPaymentPresenter.fetchPlannedPayment(productIdentifier, caseIdentifier, 0,
-                initialDisbursalDate, false);
+        fetchPlannedPayment();
     }
 
     @Override
@@ -205,18 +208,18 @@
     @Override
     public void showEmptyPayments(String message) {
         showRecyclerView(false);
-        tvError.setText(getString(R.string.empty_planned_payments));
-        showMessage(getString(R.string.empty_planned_payments));
+        showFineractEmptyUI(getString(R.string.planned_payments),
+                getString(R.string.planned_payments), R.drawable.ic_payment_black_24dp);
     }
 
     @Override
     public void showRecyclerView(boolean visible) {
         if (visible) {
             rvPlannedPayment.setVisibility(View.VISIBLE);
-            rlError.setVisibility(View.GONE);
+            layoutError.setVisibility(View.GONE);
         } else {
             rvPlannedPayment.setVisibility(View.GONE);
-            rlError.setVisibility(View.VISIBLE);
+            layoutError.setVisibility(View.VISIBLE);
         }
     }
 
@@ -236,10 +239,19 @@
     }
 
     @Override
-    public void showError() {
+    public void showNoInternetConnection() {
         showRecyclerView(false);
-        tvError.setText(getString(R.string.error_loading_planned_payment));
-        showMessage(getString(R.string.error_loading_planned_payment));
+        showFineractNoInternetUI();
+    }
+
+    @Override
+    public void showError(String message) {
+        if (plannedPaymentAdapter.getItemCount() != 0) {
+            showMessage(message);
+        } else {
+            showRecyclerView(false);
+            showFineractErrorUI(getString(R.string.planned_payments));
+        }
     }
 
     @Override
diff --git a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/plannedpayment/PlannedPaymentPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/plannedpayment/PlannedPaymentPresenter.java
index 85357da..1e7c2e9 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/plannedpayment/PlannedPaymentPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/loanaccounts/plannedpayment/PlannedPaymentPresenter.java
@@ -6,6 +6,7 @@
 import org.apache.fineract.data.datamanager.DataManagerIndividualLending;
 import org.apache.fineract.data.models.payment.PlannedPayment;
 import org.apache.fineract.data.models.payment.PlannedPaymentPage;
+import org.apache.fineract.exceptions.NoConnectivityException;
 import org.apache.fineract.injection.ApplicationContext;
 import org.apache.fineract.injection.ConfigPersistent;
 import org.apache.fineract.ui.base.BasePresenter;
@@ -87,13 +88,17 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        if (loadmore) {
+                        if (loadmore && !(throwable instanceof NoConnectivityException)) {
                             getMvpView().showMessage(
                                     context.getString(R.string.error_loading_planned_payment));
+                        } else if (loadmore && (throwable instanceof NoConnectivityException)) {
+                            getMvpView().showMessage(
+                                    context.getString(R.string.no_internet_connection));
                         } else {
-                            getMvpView().showError();
+                            showExceptionError(throwable,
+                                    context.getString(R.string.error_loading_planned_payment));
                         }
                     }
 
diff --git a/app/src/main/java/org/apache/fineract/ui/online/login/LoginActivity.java b/app/src/main/java/org/apache/fineract/ui/online/login/LoginActivity.java
index 84b39fc..9956991 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/login/LoginActivity.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/login/LoginActivity.java
@@ -10,6 +10,7 @@
 import org.apache.fineract.data.local.PreferencesHelper;
 import org.apache.fineract.data.models.Authentication;
 import org.apache.fineract.ui.base.FineractBaseActivity;
+import org.apache.fineract.ui.base.Toaster;
 import org.apache.fineract.ui.online.DashboardActivity;
 
 import javax.inject.Inject;
@@ -88,6 +89,11 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        Toaster.show(findViewById(android.R.id.content), R.string.no_internet_connection);
+    }
+
+    @Override
     public void showError(String errorMessage) {
         Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show();
     }
diff --git a/app/src/main/java/org/apache/fineract/ui/online/login/LoginPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/login/LoginPresenter.java
index e412876..5e5de54 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/login/LoginPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/login/LoginPresenter.java
@@ -9,6 +9,7 @@
 import org.apache.fineract.data.datamanager.DataManagerAuth;
 import org.apache.fineract.data.models.Authentication;
 import org.apache.fineract.data.models.error.MifosError;
+import org.apache.fineract.exceptions.NoConnectivityException;
 import org.apache.fineract.injection.ApplicationContext;
 import org.apache.fineract.injection.ConfigPersistent;
 import org.apache.fineract.ui.base.BasePresenter;
@@ -75,9 +76,8 @@
                     @Override
                     public void onError(Throwable throwable) {
                         getMvpView().hideProgressDialog();
-                        if (throwable instanceof IOException) {
-                            getMvpView().showError(
-                                    context.getString(R.string.no_internet_connection));
+                        if (throwable instanceof NoConnectivityException) {
+                            getMvpView().showNoInternetConnection();
                         }
 
                         MifosError mifosError = new MifosError();
diff --git a/app/src/main/java/org/apache/fineract/ui/online/roles/roleslist/RolesFragment.java b/app/src/main/java/org/apache/fineract/ui/online/roles/roleslist/RolesFragment.java
index 9bfa22e..247d453 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/roles/roleslist/RolesFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/roles/roleslist/RolesFragment.java
@@ -2,16 +2,12 @@
 
 import android.os.Bundle;
 import android.support.annotation.Nullable;
-import android.support.v4.content.ContextCompat;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
 
 import org.apache.fineract.R;
 import org.apache.fineract.data.models.rolesandpermission.Role;
@@ -41,14 +37,8 @@
     @BindView(R.id.swipe_container)
     SwipeRefreshLayout swipeRefreshLayout;
 
-    @BindView(R.id.rl_error)
-    RelativeLayout rlError;
-
-    @BindView(R.id.iv_retry)
-    ImageView ivRetry;
-
-    @BindView(R.id.tv_error)
-    TextView tvError;
+    @BindView(R.id.layout_error)
+    View layoutError;
 
     View rootView;
 
@@ -72,6 +62,7 @@
         rootView = inflater.inflate(R.layout.fragment_roles_list, container, false);
         ((FineractBaseActivity) getActivity()).getActivityComponent().inject(this);
         ButterKnife.bind(this, rootView);
+        initializeFineractUIErrorHandler(getActivity(), rootView);
         rolesPresenter.attachView(this);
         setToolbarTitle(getString(R.string.manage_roles));
 
@@ -91,9 +82,9 @@
         rolesPresenter.fetchRoles();
     }
 
-    @OnClick(R.id.iv_retry)
+    @OnClick(R.id.btn_try_again)
     void reloadRoles() {
-        rlError.setVisibility(View.GONE);
+        layoutError.setVisibility(View.GONE);
         rvRoles.setVisibility(View.GONE);
         rolesPresenter.fetchRoles();
     }
@@ -120,19 +111,18 @@
     @Override
     public void showEmptyRoles() {
         showRecyclerView(false);
-        tvError.setText(R.string.empty_roles);
-        ivRetry.setImageDrawable(ContextCompat.getDrawable(getActivity(),
-                R.drawable.ic_assignment_turned_in_black_24dp));
+        showFineractEmptyUI(getString(R.string.roles_and_permissions), getString(R.string.role),
+                R.drawable.ic_lock_black_24dp);
     }
 
     @Override
     public void showRecyclerView(Boolean status) {
         if (status) {
             rvRoles.setVisibility(View.VISIBLE);
-            rlError.setVisibility(View.GONE);
+            layoutError.setVisibility(View.GONE);
         } else {
             rvRoles.setVisibility(View.GONE);
-            rlError.setVisibility(View.VISIBLE);
+            layoutError.setVisibility(View.VISIBLE);
         }
     }
 
@@ -147,9 +137,15 @@
     }
 
     @Override
+    public void showNoInternetConnection() {
+        showRecyclerView(false);
+        showFineractNoInternetUI();
+    }
+
+    @Override
     public void showError(String message) {
         showRecyclerView(false);
-        tvError.setText(message);
+        showFineractErrorUI(getString(R.string.roles_and_permissions));
     }
 
     @Override
diff --git a/app/src/main/java/org/apache/fineract/ui/online/roles/roleslist/RolesPresenter.java b/app/src/main/java/org/apache/fineract/ui/online/roles/roleslist/RolesPresenter.java
index b24d86a..8afd1c0 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/roles/roleslist/RolesPresenter.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/roles/roleslist/RolesPresenter.java
@@ -56,9 +56,10 @@
                     }
 
                     @Override
-                    public void onError(Throwable e) {
+                    public void onError(Throwable throwable) {
                         getMvpView().hideProgressbar();
-                        getMvpView().showError(context.getString(R.string.error_fetching_roles));
+                        showExceptionError(throwable,
+                                context.getString(R.string.error_fetching_roles));
                     }
 
                     @Override
diff --git a/app/src/main/java/org/apache/fineract/ui/uierrorhandler/FineractUIErrorHandler.java b/app/src/main/java/org/apache/fineract/ui/uierrorhandler/FineractUIErrorHandler.java
index 9f84055..0bf6eb6 100644
--- a/app/src/main/java/org/apache/fineract/ui/uierrorhandler/FineractUIErrorHandler.java
+++ b/app/src/main/java/org/apache/fineract/ui/uierrorhandler/FineractUIErrorHandler.java
@@ -19,6 +19,7 @@
 public class FineractUIErrorHandler {
 
     private ImageView ivEmptyFeatureImage;
+    private ImageView ivErrorNoInternet;
     private TextView tvFeatureName;
     private TextView tvSubFeatureName;
     private Button btnTryAgain;
@@ -55,6 +56,7 @@
                 llErrorToLoad.setVisibility(View.VISIBLE);
                 btnTryAgain.setText(context.getString(R.string.try_again));
                 tvErrorFeatureName.setText(featureName);
+                ivErrorNoInternet.setImageResource(R.drawable.ic_cloud_off_black_24dp);
                 break;
             case NO_INTERNET:
                 llEmptyUI.setVisibility(View.GONE);
@@ -62,6 +64,7 @@
                 llNoInternet.setVisibility(View.VISIBLE);
                 llErrorToLoad.setVisibility(View.VISIBLE);
                 btnTryAgain.setText(context.getString(R.string.retry));
+                ivErrorNoInternet.setImageResource(R.drawable.ic_portable_wifi_off_black_24dp);
                 break;
         }
     }
@@ -76,5 +79,6 @@
         llError = ButterKnife.findById(view, R.id.ll_error);
         btnTryAgain = ButterKnife.findById(view, R.id.btn_try_again);
         tvErrorFeatureName = ButterKnife.findById(view, R.id.tv_error_feature_name);
+        ivErrorNoInternet = ButterKnife.findById(view, R.id.iv_error_no_connection);
     }
 }
diff --git a/app/src/main/java/org/apache/fineract/utils/MifosErrorUtils.java b/app/src/main/java/org/apache/fineract/utils/MifosErrorUtils.java
index f7343f6..fc50b06 100644
--- a/app/src/main/java/org/apache/fineract/utils/MifosErrorUtils.java
+++ b/app/src/main/java/org/apache/fineract/utils/MifosErrorUtils.java
@@ -32,6 +32,10 @@
         return gson.fromJson(serverResponse, MifosError.class);
     }
 
+    public static String getFineractError(Throwable throwable, String message) {
+        return message;
+    }
+
     public static String getErrorMessage(Context context, Throwable throwable) {
         MifosError mifosError = new MifosError();
         Converter<ResponseBody, MifosError> errorConverter =
diff --git a/app/src/main/java/org/apache/fineract/utils/NetworkUtil.java b/app/src/main/java/org/apache/fineract/utils/NetworkUtil.java
new file mode 100644
index 0000000..ae5386a
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/utils/NetworkUtil.java
@@ -0,0 +1,110 @@
+package org.apache.fineract.utils;
+
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.telephony.TelephonyManager;
+
+/**
+ * Check device's network connectivity and speed
+ *
+ * @author emil http://stackoverflow.com/users/220710/emil
+ */
+public class NetworkUtil {
+
+    /**
+     * Get the network info
+     */
+    public static NetworkInfo getNetworkInfo(Context context) {
+        ConnectivityManager cm = (ConnectivityManager)
+                context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        return cm.getActiveNetworkInfo();
+    }
+
+    /**
+     * Check if there is any connectivity
+     */
+    public static boolean isConnected(Context context) {
+        NetworkInfo info = NetworkUtil.getNetworkInfo(context);
+        return (info != null && info.isConnected());
+    }
+
+    /**
+     * Check if there is any connectivity to a Wifi network
+     */
+    public static boolean isConnectedWifi(Context context) {
+        NetworkInfo info = NetworkUtil.getNetworkInfo(context);
+        return (info != null && info.isConnected()
+                && info.getType() == ConnectivityManager.TYPE_WIFI);
+    }
+
+    /**
+     * Check if there is any connectivity to a mobile network
+     */
+    public static boolean isConnectedMobile(Context context) {
+        NetworkInfo info = NetworkUtil.getNetworkInfo(context);
+        return (info != null && info.isConnected()
+                && info.getType() == ConnectivityManager.TYPE_MOBILE);
+    }
+
+    /**
+     * Check if there is fast connectivity
+     */
+    public static boolean isConnectedFast(Context context) {
+        NetworkInfo info = NetworkUtil.getNetworkInfo(context);
+        return (info != null && info.isConnected() &&
+                NetworkUtil.isConnectionFast(info.getType(), info.getSubtype()));
+    }
+
+    /**
+     * Check if the connection is fast
+     */
+    public static boolean isConnectionFast(int type, int subType) {
+        if (type == ConnectivityManager.TYPE_WIFI) {
+            return true;
+        } else if (type == ConnectivityManager.TYPE_MOBILE) {
+            switch (subType) {
+                case TelephonyManager.NETWORK_TYPE_1xRTT:
+                    return false; // ~ 50-100 kbps
+                case TelephonyManager.NETWORK_TYPE_CDMA:
+                    return false; // ~ 14-64 kbps
+                case TelephonyManager.NETWORK_TYPE_EDGE:
+                    return false; // ~ 50-100 kbps
+                case TelephonyManager.NETWORK_TYPE_EVDO_0:
+                    return true; // ~ 400-1000 kbps
+                case TelephonyManager.NETWORK_TYPE_EVDO_A:
+                    return true; // ~ 600-1400 kbps
+                case TelephonyManager.NETWORK_TYPE_GPRS:
+                    return false; // ~ 100 kbps
+                case TelephonyManager.NETWORK_TYPE_HSDPA:
+                    return true; // ~ 2-14 Mbps
+                case TelephonyManager.NETWORK_TYPE_HSPA:
+                    return true; // ~ 700-1700 kbps
+                case TelephonyManager.NETWORK_TYPE_HSUPA:
+                    return true; // ~ 1-23 Mbps
+                case TelephonyManager.NETWORK_TYPE_UMTS:
+                    return true; // ~ 400-7000 kbps
+                /*
+                 * Above API level 7, make sure to set android:targetSdkVersion
+                 * to appropriate level to use these
+                 */
+                case TelephonyManager.NETWORK_TYPE_EHRPD: // API level 11 
+                    return true; // ~ 1-2 Mbps
+                case TelephonyManager.NETWORK_TYPE_EVDO_B: // API level 9
+                    return true; // ~ 5 Mbps
+                case TelephonyManager.NETWORK_TYPE_HSPAP: // API level 13
+                    return true; // ~ 10-20 Mbps
+                case TelephonyManager.NETWORK_TYPE_IDEN: // API level 8
+                    return false; // ~25 kbps 
+                case TelephonyManager.NETWORK_TYPE_LTE: // API level 11
+                    return true; // ~ 10+ Mbps
+                // Unknown
+                case TelephonyManager.NETWORK_TYPE_UNKNOWN:
+                default:
+                    return false;
+            }
+        } else {
+            return false;
+        }
+    }
+}
diff --git a/app/src/main/res/layout/fragment_customer_activities.xml b/app/src/main/res/layout/fragment_customer_activities.xml
index bb3d494..3e328d8 100644
--- a/app/src/main/res/layout/fragment_customer_activities.xml
+++ b/app/src/main/res/layout/fragment_customer_activities.xml
@@ -19,8 +19,8 @@
     </android.support.v4.widget.SwipeRefreshLayout>
 
     <include
-        layout="@layout/layout_error"
-        android:id="@+id/rl_error"
+        layout="@layout/layout_exception_handler"
+        android:id="@+id/layout_error"
         android:visibility="gone"/>
 
 </android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_customer_deposit_details.xml b/app/src/main/res/layout/fragment_customer_deposit_details.xml
index 9ed7459..c47a1b3 100644
--- a/app/src/main/res/layout/fragment_customer_deposit_details.xml
+++ b/app/src/main/res/layout/fragment_customer_deposit_details.xml
@@ -212,12 +212,13 @@
     </android.support.v7.widget.CardView>
 
     <include
-        layout="@layout/layout_error"
-        android:id="@+id/rl_error"
+        layout="@layout/layout_exception_handler"
+        android:id="@+id/layout_error"
         android:visibility="gone"/>
 
     <android.support.design.widget.FloatingActionButton
         android:clickable="true"
+        android:focusable="true"
         android:id="@+id/fab_edit_deposit_account"
         android:layout_gravity="bottom|end"
         android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/fragment_customer_details.xml b/app/src/main/res/layout/fragment_customer_details.xml
index ceb7735..f86dc14 100644
--- a/app/src/main/res/layout/fragment_customer_details.xml
+++ b/app/src/main/res/layout/fragment_customer_details.xml
@@ -1,667 +1,673 @@
 <?xml version="1.0" encoding="utf-8"?>
 <android.support.design.widget.CoordinatorLayout
-    android:id="@+id/cl_customer_details"
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
-    android:fitsSystemWindows="true"
     android:layout_height="match_parent"
     android:layout_width="match_parent"
     android:visibility="visible">
 
-    <android.support.design.widget.AppBarLayout
-        android:fitsSystemWindows="true"
-        android:id="@+id/app_bar_layout"
-        android:layout_height="@dimen/detail_backdrop_height"
-        android:layout_width="match_parent"
-        android:theme="@style/AppTheme.AppBarOverlay">
-
-        <android.support.design.widget.CollapsingToolbarLayout
-            android:clickable="true"
-            android:focusable="true"
-            android:fitsSystemWindows="true"
-            android:foreground="?android:attr/selectableItemBackground"
-            android:id="@+id/collapsing_toolbar"
-            android:layout_height="match_parent"
-            android:layout_width="match_parent"
-            app:contentScrim="?attr/colorPrimary"
-            app:layout_scrollFlags="scroll|exitUntilCollapsed">
-
-            <ImageView
-                android:contentDescription="@string/customer_image"
-                android:fitsSystemWindows="true"
-                android:id="@+id/iv_customer_profile"
-                android:layout_height="match_parent"
-                android:layout_width="match_parent"
-                android:scaleType="fitCenter"
-                android:src="@drawable/mifos_logo_new"
-                app:layout_collapseMode="parallax"/>
-
-            <android.support.v7.widget.Toolbar
-                android:id="@+id/toolbar"
-                android:layout_height="?attr/actionBarSize"
-                android:layout_width="match_parent"
-                app:layout_collapseMode="pin">
-
-                <include
-                    layout="@layout/layout_collapsing_header_view"
-                    android:id="@+id/toolbar_header_view"
-                    android:layout_height="wrap_content"
-                    android:layout_marginEnd="@dimen/header_view_end_margin_right"
-                    android:layout_marginRight="@dimen/header_view_end_margin_right"
-                    android:layout_width="match_parent"
-                    android:visibility="gone"/>
-
-            </android.support.v7.widget.Toolbar>
-
-        </android.support.design.widget.CollapsingToolbarLayout>
-
-    </android.support.design.widget.AppBarLayout>
-
-    <android.support.v4.widget.NestedScrollView
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:app="http://schemas.android.com/apk/res-auto"
-        android:background="@color/gray_light"
-        android:id="@+id/ncv_customer_details"
+    <android.support.design.widget.CoordinatorLayout
+        android:id="@+id/cl_customer_details"
         android:layout_height="match_parent"
-        android:layout_width="match_parent"
-        app:layout_behavior="@string/appbar_scrolling_view_behavior">
+        android:layout_width="match_parent">
 
-        <LinearLayout
-            android:layout_height="match_parent"
+        <android.support.design.widget.AppBarLayout
+            android:fitsSystemWindows="true"
+            android:id="@+id/app_bar_layout"
+            android:layout_height="@dimen/detail_backdrop_height"
             android:layout_width="match_parent"
-            android:orientation="vertical">
+            android:theme="@style/AppTheme.AppBarOverlay">
 
-            <android.support.v7.widget.CardView
-                xmlns:android="http://schemas.android.com/apk/res/android"
-                xmlns:app="http://schemas.android.com/apk/res-auto"
-                android:background="@color/white"
+            <android.support.design.widget.CollapsingToolbarLayout
                 android:clickable="true"
+                android:fitsSystemWindows="true"
+                android:focusable="true"
                 android:foreground="?android:attr/selectableItemBackground"
-                android:id="@+id/cv_customer"
+                android:id="@+id/collapsing_toolbar"
                 android:layout_height="match_parent"
                 android:layout_width="match_parent"
-                android:visibility="visible">
+                app:contentScrim="?attr/colorPrimary"
+                app:layout_scrollFlags="scroll|exitUntilCollapsed">
 
-                <LinearLayout
+                <ImageView
+                    android:contentDescription="@string/customer_image"
+                    android:fitsSystemWindows="true"
+                    android:id="@+id/iv_customer_profile"
                     android:layout_height="match_parent"
                     android:layout_width="match_parent"
-                    android:orientation="vertical"
-                    android:padding="16dp">
+                    android:scaleType="fitCenter"
+                    android:src="@drawable/mifos_logo_new"
+                    app:layout_collapseMode="parallax"/>
+
+                <android.support.v7.widget.Toolbar
+                    android:id="@+id/toolbar"
+                    android:layout_height="?attr/actionBarSize"
+                    android:layout_width="match_parent"
+                    app:layout_collapseMode="pin">
+
+                    <include
+                        layout="@layout/layout_collapsing_header_view"
+                        android:id="@+id/toolbar_header_view"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="@dimen/header_view_end_margin_right"
+                        android:layout_marginRight="@dimen/header_view_end_margin_right"
+                        android:layout_width="match_parent"
+                        android:visibility="gone"/>
+
+                </android.support.v7.widget.Toolbar>
+
+            </android.support.design.widget.CollapsingToolbarLayout>
+
+        </android.support.design.widget.AppBarLayout>
+
+        <android.support.v4.widget.NestedScrollView
+            xmlns:android="http://schemas.android.com/apk/res/android"
+            xmlns:app="http://schemas.android.com/apk/res-auto"
+            android:background="@color/gray_light"
+            android:id="@+id/ncv_customer_details"
+            android:layout_height="match_parent"
+            android:layout_width="match_parent"
+            app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+            <LinearLayout
+                android:layout_height="match_parent"
+                android:layout_width="match_parent"
+                android:orientation="vertical">
+
+                <android.support.v7.widget.CardView
+                    xmlns:android="http://schemas.android.com/apk/res/android"
+                    xmlns:app="http://schemas.android.com/apk/res-auto"
+                    android:background="@color/white"
+                    android:clickable="true"
+                    android:foreground="?android:attr/selectableItemBackground"
+                    android:id="@+id/cv_customer"
+                    android:layout_height="match_parent"
+                    android:layout_width="match_parent"
+                    android:visibility="visible">
 
                     <LinearLayout
-                        android:id="@+id/ll_current_status"
+                        android:layout_height="match_parent"
+                        android:layout_width="match_parent"
+                        android:orientation="vertical"
+                        android:padding="16dp">
+
+                        <LinearLayout
+                            android:id="@+id/ll_current_status"
+                            android:layout_height="match_parent"
+                            android:layout_width="match_parent"
+                            android:orientation="vertical">
+
+                            <TextView
+                                android:layout_height="wrap_content"
+                                android:layout_width="wrap_content"
+                                android:text="@string/current_status"
+                                android:textColor="@color/colorSecondaryText"
+                                android:textSize="@dimen/text_size_12sp"/>
+
+                            <LinearLayout
+                                android:layout_height="match_parent"
+                                android:layout_width="wrap_content"
+                                android:orientation="horizontal"
+                                android:paddingTop="@dimen/layout_padding_4dp">
+
+                                <LinearLayout
+                                    style="@style/circleLayout"
+                                    android:gravity="center"
+                                    android:id="@+id/ll_task1"
+                                    android:layout_height="35dp"
+                                    android:layout_width="35dp">
+
+                                    <ImageView
+                                        android:id="@+id/iv_current_status"
+                                        android:layout_height="wrap_content"
+                                        android:layout_width="wrap_content"
+                                        app:srcCompat="@drawable/ic_check_circle_black_24dp"/>
+
+                                </LinearLayout>
+
+                                <TextView
+                                    android:id="@+id/tv_current_status"
+                                    android:layout_gravity="center"
+                                    android:layout_height="wrap_content"
+                                    android:layout_width="wrap_content"
+                                    android:paddingEnd="0dp"
+                                    android:paddingLeft="@dimen/layout_padding_8dp"
+                                    android:paddingRight="0dp"
+                                    android:paddingStart="@dimen/layout_padding_8dp"
+                                    tools:text="Active"/>
+
+                            </LinearLayout>
+
+                        </LinearLayout>
+
+                        <LinearLayout
+                            android:id="@+id/ll_address"
+                            android:layout_height="match_parent"
+                            android:layout_width="match_parent"
+                            android:orientation="vertical"
+                            android:paddingTop="@dimen/layout_padding_16dp">
+
+                            <TextView
+                                android:layout_height="wrap_content"
+                                android:layout_width="wrap_content"
+                                android:text="@string/address"
+                                android:textColor="@color/colorSecondaryText"
+                                android:textSize="@dimen/text_size_12sp"/>
+
+                            <RelativeLayout
+                                android:layout_height="match_parent"
+                                android:layout_width="match_parent"
+                                android:orientation="horizontal"
+                                android:paddingTop="@dimen/layout_padding_4dp">
+
+                                <ImageView
+                                    style="@style/circleLayout"
+                                    android:id="@+id/iv_address"
+                                    android:layout_height="35dp"
+                                    android:layout_width="35dp"
+                                    app:srcCompat="@drawable/ic_place_black_24dp"/>
+
+                                <TextView
+                                    android:foregroundGravity="center"
+                                    android:id="@+id/tv_address"
+                                    android:isScrollContainer="false"
+                                    android:layout_centerInParent="true"
+                                    android:layout_height="match_parent"
+                                    android:layout_toEndOf="@+id/iv_address"
+                                    android:layout_toRightOf="@+id/iv_address"
+                                    android:layout_width="match_parent"
+                                    android:paddingEnd="0dp"
+                                    android:paddingLeft="@dimen/layout_padding_8dp"
+                                    android:paddingRight="0dp"
+                                    android:paddingStart="@dimen/layout_padding_8dp"
+                                    tools:text="Lärchen,Lärchenhof 7, Nickenich,"/>
+
+                            </RelativeLayout>
+
+                        </LinearLayout>
+
+                        <LinearLayout
+                            android:id="@+id/ll_contact_info"
+                            android:layout_height="match_parent"
+                            android:layout_width="match_parent"
+                            android:orientation="vertical"
+                            android:paddingTop="@dimen/layout_padding_16dp">
+
+                            <TextView
+                                android:layout_height="wrap_content"
+                                android:layout_width="wrap_content"
+                                android:text="@string/contact_information"
+                                android:textColor="@color/colorSecondaryText"
+                                android:textSize="@dimen/text_size_12sp"/>
+
+                            <TextView
+                                android:id="@+id/tv_no_contact_details_available"
+                                android:layout_height="wrap_content"
+                                android:layout_width="wrap_content"
+                                android:paddingBottom="@dimen/layout_padding_4dp"
+                                android:paddingTop="@dimen/layout_padding_4dp"
+                                android:text="@string/no_contact_details_available"
+                                android:visibility="gone"/>
+
+                            <RelativeLayout
+                                android:id="@+id/rl_email"
+                                android:layout_height="match_parent"
+                                android:layout_width="match_parent"
+                                android:orientation="horizontal"
+                                android:paddingTop="@dimen/layout_padding_4dp"
+                                android:visibility="gone">
+
+                                <ImageView
+                                    style="@style/circleLayout"
+                                    android:id="@+id/iv_email"
+                                    android:layout_height="35dp"
+                                    android:layout_width="35dp"
+                                    app:srcCompat="@drawable/ic_email_black_24dp"/>
+
+                                <TextView
+                                    android:foregroundGravity="center"
+                                    android:id="@+id/tv_email"
+                                    android:isScrollContainer="false"
+                                    android:layout_centerInParent="true"
+                                    android:layout_height="match_parent"
+                                    android:layout_toEndOf="@+id/iv_email"
+                                    android:layout_toRightOf="@+id/iv_email"
+                                    android:layout_width="match_parent"
+                                    android:paddingEnd="0dp"
+                                    android:paddingLeft="@dimen/layout_padding_8dp"
+                                    android:paddingRight="0dp"
+                                    android:paddingStart="@dimen/layout_padding_8dp"
+                                    tools:text="example@gmail.com"/>
+
+                            </RelativeLayout>
+
+                            <RelativeLayout
+                                android:id="@+id/rl_phone_no"
+                                android:layout_height="match_parent"
+                                android:layout_width="match_parent"
+                                android:orientation="horizontal"
+                                android:paddingTop="@dimen/layout_padding_4dp"
+                                android:visibility="gone">
+
+                                <ImageView
+                                    style="@style/circleLayout"
+                                    android:id="@+id/iv_phone_no"
+                                    android:layout_height="35dp"
+                                    android:layout_width="35dp"
+                                    app:srcCompat="@drawable/ic_phone_black_24dp"/>
+
+                                <TextView
+                                    android:foregroundGravity="center"
+                                    android:id="@+id/tv_phone_no"
+                                    android:isScrollContainer="false"
+                                    android:layout_centerInParent="true"
+                                    android:layout_height="match_parent"
+                                    android:layout_toEndOf="@+id/iv_phone_no"
+                                    android:layout_toRightOf="@+id/iv_phone_no"
+                                    android:layout_width="match_parent"
+                                    android:paddingEnd="0dp"
+                                    android:paddingLeft="@dimen/layout_padding_8dp"
+                                    android:paddingRight="0dp"
+                                    android:paddingStart="@dimen/layout_padding_8dp"
+                                    tools:text="PrefixOperator - NoTelp"/>
+
+                            </RelativeLayout>
+
+                            <RelativeLayout
+                                android:id="@+id/rl_mobile_no"
+                                android:layout_height="match_parent"
+                                android:layout_width="match_parent"
+                                android:orientation="horizontal"
+                                android:paddingTop="@dimen/layout_padding_4dp"
+                                android:visibility="gone">
+
+                                <ImageView
+                                    style="@style/circleLayout"
+                                    android:id="@+id/iv_mobile_no"
+                                    android:layout_height="35dp"
+                                    android:layout_width="35dp"
+                                    app:srcCompat="@drawable/ic_smartphone_black_24dp"/>
+
+                                <TextView
+                                    android:foregroundGravity="center"
+                                    android:id="@+id/tv_mobile_no"
+                                    android:isScrollContainer="false"
+                                    android:layout_centerInParent="true"
+                                    android:layout_height="match_parent"
+                                    android:layout_toEndOf="@+id/iv_mobile_no"
+                                    android:layout_toRightOf="@+id/iv_mobile_no"
+                                    android:layout_width="match_parent"
+                                    android:paddingEnd="0dp"
+                                    android:paddingLeft="@dimen/layout_padding_8dp"
+                                    android:paddingRight="0dp"
+                                    android:paddingStart="@dimen/layout_padding_8dp"
+                                    tools:text="KodeArea - Notelp"/>
+
+                            </RelativeLayout>
+
+                        </LinearLayout>
+
+                        <LinearLayout
+                            android:id="@+id/ll_birthday"
+                            android:layout_height="match_parent"
+                            android:layout_width="match_parent"
+                            android:orientation="vertical"
+                            android:paddingTop="@dimen/layout_padding_16dp">
+
+                            <TextView
+                                android:layout_height="wrap_content"
+                                android:layout_width="wrap_content"
+                                android:text="@string/birthday"
+                                android:textColor="@color/colorSecondaryText"
+                                android:textSize="@dimen/text_size_12sp"/>
+
+                            <RelativeLayout
+                                android:layout_height="match_parent"
+                                android:layout_width="match_parent"
+                                android:orientation="horizontal"
+                                android:paddingTop="@dimen/layout_padding_4dp">
+
+                                <ImageView
+                                    style="@style/circleLayout"
+                                    android:id="@+id/iv_birthday"
+                                    android:layout_height="35dp"
+                                    android:layout_width="35dp"
+                                    app:srcCompat="@drawable/ic_cake_black_24dp"/>
+
+                                <TextView
+                                    android:foregroundGravity="center"
+                                    android:id="@+id/tv_birthday"
+                                    android:isScrollContainer="false"
+                                    android:layout_centerInParent="true"
+                                    android:layout_height="match_parent"
+                                    android:layout_toEndOf="@+id/iv_birthday"
+                                    android:layout_toRightOf="@+id/iv_birthday"
+                                    android:layout_width="match_parent"
+                                    android:paddingEnd="0dp"
+                                    android:paddingLeft="@dimen/layout_padding_8dp"
+                                    android:paddingRight="0dp"
+                                    android:paddingStart="@dimen/layout_padding_8dp"
+                                    tools:text="1974-7-18"/>
+
+                            </RelativeLayout>
+
+                        </LinearLayout>
+
+                    </LinearLayout>
+
+                </android.support.v7.widget.CardView>
+
+                <TextView
+                    android:layout_height="match_parent"
+                    android:layout_width="match_parent"
+                    android:paddingBottom="@dimen/layout_padding_8dp"
+                    android:paddingEnd="0dp"
+                    android:paddingLeft="@dimen/layout_padding_8dp"
+                    android:paddingRight="0dp"
+                    android:paddingStart="@dimen/layout_padding_8dp"
+                    android:paddingTop="@dimen/layout_padding_16dp"
+                    android:text="@string/financial_products"/>
+
+                <android.support.v7.widget.CardView
+                    xmlns:android="http://schemas.android.com/apk/res/android"
+                    xmlns:app="http://schemas.android.com/apk/res-auto"
+                    android:background="@color/white"
+                    android:id="@+id/cv_financial_products"
+                    android:layout_height="match_parent"
+                    android:layout_width="match_parent"
+                    android:visibility="visible">
+
+                    <LinearLayout
                         android:layout_height="match_parent"
                         android:layout_width="match_parent"
                         android:orientation="vertical">
 
-                        <TextView
-                            android:layout_height="wrap_content"
-                            android:layout_width="wrap_content"
-                            android:text="@string/current_status"
-                            android:textColor="@color/colorSecondaryText"
-                            android:textSize="@dimen/text_size_12sp"/>
-
                         <LinearLayout
+                            android:clickable="true"
+                            android:foreground="?android:attr/selectableItemBackground"
+                            android:id="@+id/ll_loan_accounts"
                             android:layout_height="match_parent"
-                            android:layout_width="wrap_content"
+                            android:layout_width="match_parent"
                             android:orientation="horizontal"
-                            android:paddingTop="@dimen/layout_padding_4dp">
+                            android:padding="16dp">
 
                             <LinearLayout
-                                style="@style/circleLayout"
-                                android:gravity="center"
-                                android:id="@+id/ll_task1"
-                                android:layout_height="35dp"
-                                android:layout_width="35dp">
+                                android:layout_height="wrap_content"
+                                android:layout_width="wrap_content"
+                                android:orientation="horizontal">
 
                                 <ImageView
-                                    android:id="@+id/iv_current_status"
+                                    style="@style/circleLayout"
+                                    android:layout_height="35dp"
+                                    android:layout_width="35dp"
+                                    app:srcCompat="@drawable/ic_payment_black_24dp"/>
+
+                                <LinearLayout
                                     android:layout_height="wrap_content"
+                                    android:layout_marginLeft="@dimen/layout_padding_8dp"
+                                    android:layout_marginStart="@dimen/layout_padding_8dp"
                                     android:layout_width="wrap_content"
-                                    app:srcCompat="@drawable/ic_check_circle_black_24dp"/>
+                                    android:orientation="vertical">
+
+                                    <TextView
+                                        android:layout_height="wrap_content"
+                                        android:layout_width="wrap_content"
+                                        android:text="@string/loan_accounts"/>
+
+                                    <TextView
+                                        android:layout_height="match_parent"
+                                        android:layout_width="wrap_content"
+                                        android:text="@string/manage_loan_accounts"
+                                        android:textSize="@dimen/text_size_12sp"/>
+
+                                </LinearLayout>
 
                             </LinearLayout>
 
-                            <TextView
-                                android:id="@+id/tv_current_status"
-                                android:layout_gravity="center"
+
+                        </LinearLayout>
+
+                        <LinearLayout
+                            android:clickable="true"
+                            android:foreground="?android:attr/selectableItemBackground"
+                            android:id="@+id/ll_deposit_accounts"
+                            android:layout_height="match_parent"
+                            android:layout_width="match_parent"
+                            android:orientation="horizontal"
+                            android:padding="16dp">
+
+                            <LinearLayout
                                 android:layout_height="wrap_content"
                                 android:layout_width="wrap_content"
-                                android:paddingEnd="0dp"
-                                android:paddingLeft="@dimen/layout_padding_8dp"
-                                android:paddingRight="0dp"
-                                android:paddingStart="@dimen/layout_padding_8dp"
-                                tools:text="Active"/>
+                                android:orientation="horizontal">
+
+                                <ImageView
+                                    style="@style/circleLayout"
+                                    android:layout_height="35dp"
+                                    android:layout_width="35dp"
+                                    app:srcCompat="@drawable/ic_attach_money_black_24dp"/>
+
+                                <LinearLayout
+                                    android:layout_height="wrap_content"
+                                    android:layout_marginLeft="@dimen/layout_padding_8dp"
+                                    android:layout_marginStart="@dimen/layout_padding_8dp"
+                                    android:layout_width="match_parent"
+                                    android:orientation="vertical">
+
+                                    <TextView
+                                        android:layout_height="wrap_content"
+                                        android:layout_width="wrap_content"
+                                        android:text="@string/deposit_accounts"/>
+
+                                    <TextView
+                                        android:layout_height="match_parent"
+                                        android:layout_width="wrap_content"
+                                        android:text="@string/manage_deposit_accounts"
+                                        android:textSize="@dimen/text_size_12sp"/>
+
+                                </LinearLayout>
+
+                            </LinearLayout>
 
                         </LinearLayout>
 
                     </LinearLayout>
 
-                    <LinearLayout
-                        android:id="@+id/ll_address"
-                        android:layout_height="match_parent"
-                        android:layout_width="match_parent"
-                        android:orientation="vertical"
-                        android:paddingTop="@dimen/layout_padding_16dp">
+                </android.support.v7.widget.CardView>
 
-                        <TextView
-                            android:layout_height="wrap_content"
-                            android:layout_width="wrap_content"
-                            android:text="@string/address"
-                            android:textColor="@color/colorSecondaryText"
-                            android:textSize="@dimen/text_size_12sp"/>
-
-                        <RelativeLayout
-                            android:layout_height="match_parent"
-                            android:layout_width="match_parent"
-                            android:orientation="horizontal"
-                            android:paddingTop="@dimen/layout_padding_4dp">
-
-                            <ImageView
-                                style="@style/circleLayout"
-                                android:id="@+id/iv_address"
-                                android:layout_height="35dp"
-                                android:layout_width="35dp"
-                                app:srcCompat="@drawable/ic_place_black_24dp"/>
-
-                            <TextView
-                                android:foregroundGravity="center"
-                                android:id="@+id/tv_address"
-                                android:isScrollContainer="false"
-                                android:layout_centerInParent="true"
-                                android:layout_height="match_parent"
-                                android:layout_toEndOf="@+id/iv_address"
-                                android:layout_toRightOf="@+id/iv_address"
-                                android:layout_width="match_parent"
-                                android:paddingEnd="0dp"
-                                android:paddingLeft="@dimen/layout_padding_8dp"
-                                android:paddingRight="0dp"
-                                android:paddingStart="@dimen/layout_padding_8dp"
-                                tools:text="Lärchen,Lärchenhof 7, Nickenich,"/>
-
-                        </RelativeLayout>
-
-                    </LinearLayout>
-
-                    <LinearLayout
-                        android:id="@+id/ll_contact_info"
-                        android:layout_height="match_parent"
-                        android:layout_width="match_parent"
-                        android:orientation="vertical"
-                        android:paddingTop="@dimen/layout_padding_16dp">
-
-                        <TextView
-                            android:layout_height="wrap_content"
-                            android:layout_width="wrap_content"
-                            android:text="@string/contact_information"
-                            android:textColor="@color/colorSecondaryText"
-                            android:textSize="@dimen/text_size_12sp"/>
-
-                        <TextView
-                            android:id="@+id/tv_no_contact_details_available"
-                            android:layout_height="wrap_content"
-                            android:layout_width="wrap_content"
-                            android:paddingBottom="@dimen/layout_padding_4dp"
-                            android:paddingTop="@dimen/layout_padding_4dp"
-                            android:text="@string/no_contact_details_available"
-                            android:visibility="gone"/>
-
-                        <RelativeLayout
-                            android:id="@+id/rl_email"
-                            android:layout_height="match_parent"
-                            android:layout_width="match_parent"
-                            android:orientation="horizontal"
-                            android:paddingTop="@dimen/layout_padding_4dp"
-                            android:visibility="gone">
-
-                            <ImageView
-                                style="@style/circleLayout"
-                                android:id="@+id/iv_email"
-                                android:layout_height="35dp"
-                                android:layout_width="35dp"
-                                app:srcCompat="@drawable/ic_email_black_24dp"/>
-
-                            <TextView
-                                android:foregroundGravity="center"
-                                android:id="@+id/tv_email"
-                                android:isScrollContainer="false"
-                                android:layout_centerInParent="true"
-                                android:layout_height="match_parent"
-                                android:layout_toEndOf="@+id/iv_email"
-                                android:layout_toRightOf="@+id/iv_email"
-                                android:layout_width="match_parent"
-                                android:paddingEnd="0dp"
-                                android:paddingLeft="@dimen/layout_padding_8dp"
-                                android:paddingRight="0dp"
-                                android:paddingStart="@dimen/layout_padding_8dp"
-                                tools:text="example@gmail.com"/>
-
-                        </RelativeLayout>
-
-                        <RelativeLayout
-                            android:id="@+id/rl_phone_no"
-                            android:layout_height="match_parent"
-                            android:layout_width="match_parent"
-                            android:orientation="horizontal"
-                            android:paddingTop="@dimen/layout_padding_4dp"
-                            android:visibility="gone">
-
-                            <ImageView
-                                style="@style/circleLayout"
-                                android:id="@+id/iv_phone_no"
-                                android:layout_height="35dp"
-                                android:layout_width="35dp"
-                                app:srcCompat="@drawable/ic_phone_black_24dp"/>
-
-                            <TextView
-                                android:foregroundGravity="center"
-                                android:id="@+id/tv_phone_no"
-                                android:isScrollContainer="false"
-                                android:layout_centerInParent="true"
-                                android:layout_height="match_parent"
-                                android:layout_toEndOf="@+id/iv_phone_no"
-                                android:layout_toRightOf="@+id/iv_phone_no"
-                                android:layout_width="match_parent"
-                                android:paddingEnd="0dp"
-                                android:paddingLeft="@dimen/layout_padding_8dp"
-                                android:paddingRight="0dp"
-                                android:paddingStart="@dimen/layout_padding_8dp"
-                                tools:text="PrefixOperator - NoTelp"/>
-
-                        </RelativeLayout>
-
-                        <RelativeLayout
-                            android:id="@+id/rl_mobile_no"
-                            android:layout_height="match_parent"
-                            android:layout_width="match_parent"
-                            android:orientation="horizontal"
-                            android:paddingTop="@dimen/layout_padding_4dp"
-                            android:visibility="gone">
-
-                            <ImageView
-                                style="@style/circleLayout"
-                                android:id="@+id/iv_mobile_no"
-                                android:layout_height="35dp"
-                                android:layout_width="35dp"
-                                app:srcCompat="@drawable/ic_smartphone_black_24dp"/>
-
-                            <TextView
-                                android:foregroundGravity="center"
-                                android:id="@+id/tv_mobile_no"
-                                android:isScrollContainer="false"
-                                android:layout_centerInParent="true"
-                                android:layout_height="match_parent"
-                                android:layout_toEndOf="@+id/iv_mobile_no"
-                                android:layout_toRightOf="@+id/iv_mobile_no"
-                                android:layout_width="match_parent"
-                                android:paddingEnd="0dp"
-                                android:paddingLeft="@dimen/layout_padding_8dp"
-                                android:paddingRight="0dp"
-                                android:paddingStart="@dimen/layout_padding_8dp"
-                                tools:text="KodeArea - Notelp"/>
-
-                        </RelativeLayout>
-
-                    </LinearLayout>
-
-                    <LinearLayout
-                        android:id="@+id/ll_birthday"
-                        android:layout_height="match_parent"
-                        android:layout_width="match_parent"
-                        android:orientation="vertical"
-                        android:paddingTop="@dimen/layout_padding_16dp">
-
-                        <TextView
-                            android:layout_height="wrap_content"
-                            android:layout_width="wrap_content"
-                            android:text="@string/birthday"
-                            android:textColor="@color/colorSecondaryText"
-                            android:textSize="@dimen/text_size_12sp"/>
-
-                        <RelativeLayout
-                            android:layout_height="match_parent"
-                            android:layout_width="match_parent"
-                            android:orientation="horizontal"
-                            android:paddingTop="@dimen/layout_padding_4dp">
-
-                            <ImageView
-                                style="@style/circleLayout"
-                                android:id="@+id/iv_birthday"
-                                android:layout_height="35dp"
-                                android:layout_width="35dp"
-                                app:srcCompat="@drawable/ic_cake_black_24dp"/>
-
-                            <TextView
-                                android:foregroundGravity="center"
-                                android:id="@+id/tv_birthday"
-                                android:isScrollContainer="false"
-                                android:layout_centerInParent="true"
-                                android:layout_height="match_parent"
-                                android:layout_toEndOf="@+id/iv_birthday"
-                                android:layout_toRightOf="@+id/iv_birthday"
-                                android:layout_width="match_parent"
-                                android:paddingEnd="0dp"
-                                android:paddingLeft="@dimen/layout_padding_8dp"
-                                android:paddingRight="0dp"
-                                android:paddingStart="@dimen/layout_padding_8dp"
-                                tools:text="1974-7-18"/>
-
-                        </RelativeLayout>
-
-                    </LinearLayout>
-
-                </LinearLayout>
-
-            </android.support.v7.widget.CardView>
-
-            <TextView
-                android:layout_height="match_parent"
-                android:layout_width="match_parent"
-                android:paddingBottom="@dimen/layout_padding_8dp"
-                android:paddingEnd="0dp"
-                android:paddingLeft="@dimen/layout_padding_8dp"
-                android:paddingRight="0dp"
-                android:paddingStart="@dimen/layout_padding_8dp"
-                android:paddingTop="@dimen/layout_padding_16dp"
-                android:text="@string/financial_products"/>
-
-            <android.support.v7.widget.CardView
-                xmlns:android="http://schemas.android.com/apk/res/android"
-                xmlns:app="http://schemas.android.com/apk/res-auto"
-                android:background="@color/white"
-                android:id="@+id/cv_financial_products"
-                android:layout_height="match_parent"
-                android:layout_width="match_parent"
-                android:visibility="visible">
-
-                <LinearLayout
+                <TextView
                     android:layout_height="match_parent"
                     android:layout_width="match_parent"
-                    android:orientation="vertical">
+                    android:paddingBottom="@dimen/layout_padding_8dp"
+                    android:paddingEnd="0dp"
+                    android:paddingLeft="@dimen/layout_padding_8dp"
+                    android:paddingRight="0dp"
+                    android:paddingStart="@dimen/layout_padding_8dp"
+                    android:paddingTop="@dimen/layout_padding_16dp"
+                    android:text="@string/management"/>
+
+                <android.support.v7.widget.CardView
+                    xmlns:android="http://schemas.android.com/apk/res/android"
+                    xmlns:app="http://schemas.android.com/apk/res-auto"
+                    android:background="@color/white"
+                    android:id="@+id/cv_management"
+                    android:layout_height="match_parent"
+                    android:layout_width="match_parent">
 
                     <LinearLayout
-                        android:clickable="true"
-                        android:foreground="?android:attr/selectableItemBackground"
-                        android:id="@+id/ll_loan_accounts"
                         android:layout_height="match_parent"
                         android:layout_width="match_parent"
-                        android:orientation="horizontal"
-                        android:padding="16dp">
+                        android:orientation="vertical">
 
                         <LinearLayout
-                            android:layout_height="wrap_content"
-                            android:layout_width="wrap_content"
-                            android:orientation="horizontal">
-
-                            <ImageView
-                                style="@style/circleLayout"
-                                android:layout_height="35dp"
-                                android:layout_width="35dp"
-                                app:srcCompat="@drawable/ic_payment_black_24dp"/>
+                            android:clickable="true"
+                            android:foreground="?android:attr/selectableItemBackground"
+                            android:id="@+id/ll_identifier_cards"
+                            android:layout_height="match_parent"
+                            android:layout_width="match_parent"
+                            android:orientation="horizontal"
+                            android:padding="16dp">
 
                             <LinearLayout
                                 android:layout_height="wrap_content"
-                                android:layout_marginLeft="@dimen/layout_padding_8dp"
-                                android:layout_marginStart="@dimen/layout_padding_8dp"
                                 android:layout_width="wrap_content"
-                                android:orientation="vertical">
+                                android:orientation="horizontal">
 
-                                <TextView
+                                <ImageView
+                                    style="@style/circleLayout"
+                                    android:layout_height="35dp"
+                                    android:layout_width="35dp"
+                                    app:srcCompat="@drawable/ic_person_outline_black_24dp"/>
+
+
+                                <LinearLayout
                                     android:layout_height="wrap_content"
-                                    android:layout_width="wrap_content"
-                                    android:text="@string/loan_accounts"/>
+                                    android:layout_marginLeft="@dimen/layout_padding_8dp"
+                                    android:layout_marginStart="@dimen/layout_padding_8dp"
+                                    android:layout_width="match_parent"
+                                    android:orientation="vertical">
 
-                                <TextView
-                                    android:layout_height="match_parent"
-                                    android:layout_width="wrap_content"
-                                    android:text="@string/manage_loan_accounts"
-                                    android:textSize="@dimen/text_size_12sp"/>
+                                    <TextView
+                                        android:layout_height="wrap_content"
+                                        android:layout_width="wrap_content"
+                                        android:text="@string/identification_cards"/>
+
+                                    <TextView
+                                        android:layout_height="match_parent"
+                                        android:layout_width="wrap_content"
+                                        android:text="@string/view_identification_card"
+                                        android:textSize="@dimen/text_size_12sp"/>
+
+                                </LinearLayout>
 
                             </LinearLayout>
 
                         </LinearLayout>
 
-
-                    </LinearLayout>
-
-                    <LinearLayout
-                        android:clickable="true"
-                        android:foreground="?android:attr/selectableItemBackground"
-                        android:id="@+id/ll_deposit_accounts"
-                        android:layout_height="match_parent"
-                        android:layout_width="match_parent"
-                        android:orientation="horizontal"
-                        android:padding="16dp">
-
                         <LinearLayout
-                            android:layout_height="wrap_content"
-                            android:layout_width="wrap_content"
-                            android:orientation="horizontal">
-
-                            <ImageView
-                                style="@style/circleLayout"
-                                android:layout_height="35dp"
-                                android:layout_width="35dp"
-                                app:srcCompat="@drawable/ic_attach_money_black_24dp"/>
+                            android:clickable="true"
+                            android:foreground="?android:attr/selectableItemBackground"
+                            android:id="@+id/ll_tasks"
+                            android:layout_height="match_parent"
+                            android:layout_width="match_parent"
+                            android:orientation="horizontal"
+                            android:padding="16dp">
 
                             <LinearLayout
                                 android:layout_height="wrap_content"
-                                android:layout_marginLeft="@dimen/layout_padding_8dp"
-                                android:layout_marginStart="@dimen/layout_padding_8dp"
-                                android:layout_width="match_parent"
-                                android:orientation="vertical">
+                                android:layout_width="wrap_content"
+                                android:orientation="horizontal">
 
-                                <TextView
+                                <ImageView
+                                    style="@style/circleLayout"
+                                    android:layout_height="35dp"
+                                    android:layout_width="35dp"
+                                    app:srcCompat="@drawable/ic_task_black_24dp"/>
+
+                                <LinearLayout
                                     android:layout_height="wrap_content"
-                                    android:layout_width="wrap_content"
-                                    android:text="@string/deposit_accounts"/>
+                                    android:layout_marginLeft="@dimen/layout_padding_8dp"
+                                    android:layout_marginStart="@dimen/layout_padding_8dp"
+                                    android:layout_width="match_parent"
+                                    android:orientation="vertical">
 
-                                <TextView
-                                    android:layout_height="match_parent"
-                                    android:layout_width="wrap_content"
-                                    android:text="@string/manage_deposit_accounts"
-                                    android:textSize="@dimen/text_size_12sp"/>
+                                    <TextView
+                                        android:layout_height="wrap_content"
+                                        android:layout_width="wrap_content"
+                                        android:text="@string/tasks"/>
+
+                                    <TextView
+                                        android:layout_height="match_parent"
+                                        android:layout_width="wrap_content"
+                                        android:text="@string/change_customer_status"
+                                        android:textSize="@dimen/text_size_12sp"/>
+
+                                </LinearLayout>
 
                             </LinearLayout>
 
+
                         </LinearLayout>
 
-                    </LinearLayout>
-
-                </LinearLayout>
-
-            </android.support.v7.widget.CardView>
-
-            <TextView
-                android:layout_height="match_parent"
-                android:layout_width="match_parent"
-                android:paddingBottom="@dimen/layout_padding_8dp"
-                android:paddingEnd="0dp"
-                android:paddingLeft="@dimen/layout_padding_8dp"
-                android:paddingRight="0dp"
-                android:paddingStart="@dimen/layout_padding_8dp"
-                android:paddingTop="@dimen/layout_padding_16dp"
-                android:text="@string/management"/>
-
-            <android.support.v7.widget.CardView
-                xmlns:android="http://schemas.android.com/apk/res/android"
-                xmlns:app="http://schemas.android.com/apk/res-auto"
-                android:background="@color/white"
-                android:id="@+id/cv_management"
-                android:layout_height="match_parent"
-                android:layout_width="match_parent">
-
-                <LinearLayout
-                    android:layout_height="match_parent"
-                    android:layout_width="match_parent"
-                    android:orientation="vertical">
-
-                    <LinearLayout
-                        android:clickable="true"
-                        android:foreground="?android:attr/selectableItemBackground"
-                        android:id="@+id/ll_identifier_cards"
-                        android:layout_height="match_parent"
-                        android:layout_width="match_parent"
-                        android:orientation="horizontal"
-                        android:padding="16dp">
-
                         <LinearLayout
-                            android:layout_height="wrap_content"
-                            android:layout_width="wrap_content"
-                            android:orientation="horizontal">
-
-                            <ImageView
-                                style="@style/circleLayout"
-                                android:layout_height="35dp"
-                                android:layout_width="35dp"
-                                app:srcCompat="@drawable/ic_person_outline_black_24dp"/>
-
+                            android:clickable="true"
+                            android:foreground="?android:attr/selectableItemBackground"
+                            android:id="@+id/ll_activities"
+                            android:layout_height="match_parent"
+                            android:layout_width="match_parent"
+                            android:orientation="horizontal"
+                            android:padding="@dimen/layout_padding_16dp">
 
                             <LinearLayout
                                 android:layout_height="wrap_content"
-                                android:layout_marginLeft="@dimen/layout_padding_8dp"
-                                android:layout_marginStart="@dimen/layout_padding_8dp"
-                                android:layout_width="match_parent"
-                                android:orientation="vertical">
+                                android:layout_width="wrap_content"
+                                android:orientation="horizontal">
 
-                                <TextView
+                                <ImageView
+                                    style="@style/circleLayout"
+                                    android:layout_height="35dp"
+                                    android:layout_width="35dp"
+                                    app:srcCompat="@drawable/ic_event_black_24dp"/>
+
+                                <LinearLayout
                                     android:layout_height="wrap_content"
-                                    android:layout_width="wrap_content"
-                                    android:text="@string/identification_cards"/>
+                                    android:layout_marginLeft="@dimen/layout_padding_8dp"
+                                    android:layout_marginStart="@dimen/layout_padding_8dp"
+                                    android:layout_width="match_parent"
+                                    android:orientation="vertical">
 
-                                <TextView
-                                    android:layout_height="match_parent"
-                                    android:layout_width="wrap_content"
-                                    android:text="@string/view_identification_card"
-                                    android:textSize="@dimen/text_size_12sp"/>
+                                    <TextView
+                                        android:layout_height="wrap_content"
+                                        android:layout_width="wrap_content"
+                                        android:text="@string/activities"/>
+
+                                    <TextView
+                                        android:layout_height="match_parent"
+                                        android:layout_width="wrap_content"
+                                        android:text="@string/recent_activities"
+                                        android:textSize="@dimen/text_size_12sp"/>
+
+                                </LinearLayout>
 
                             </LinearLayout>
 
+
                         </LinearLayout>
 
                     </LinearLayout>
 
-                    <LinearLayout
-                        android:clickable="true"
-                        android:foreground="?android:attr/selectableItemBackground"
-                        android:id="@+id/ll_tasks"
-                        android:layout_height="match_parent"
-                        android:layout_width="match_parent"
-                        android:orientation="horizontal"
-                        android:padding="16dp">
+                </android.support.v7.widget.CardView>
 
-                        <LinearLayout
-                            android:layout_height="wrap_content"
-                            android:layout_width="wrap_content"
-                            android:orientation="horizontal">
+            </LinearLayout>
 
-                            <ImageView
-                                style="@style/circleLayout"
-                                android:layout_height="35dp"
-                                android:layout_width="35dp"
-                                app:srcCompat="@drawable/ic_task_black_24dp"/>
+        </android.support.v4.widget.NestedScrollView>
 
-                            <LinearLayout
-                                android:layout_height="wrap_content"
-                                android:layout_marginLeft="@dimen/layout_padding_8dp"
-                                android:layout_marginStart="@dimen/layout_padding_8dp"
-                                android:layout_width="match_parent"
-                                android:orientation="vertical">
+        <include
+            layout="@layout/layout_collapsing_header_view"
+            android:id="@+id/float_header_view"
+            android:layout_height="wrap_content"
+            android:layout_width="match_parent"
+            app:layout_behavior="org.apache.fineract.ui.views.ViewBehavior"
+        />
 
-                                <TextView
-                                    android:layout_height="wrap_content"
-                                    android:layout_width="wrap_content"
-                                    android:text="@string/tasks"/>
+        <android.support.design.widget.FloatingActionButton
+            android:clickable="true"
+            android:focusable="true"
+            android:id="@+id/fab_edit_customer"
+            android:layout_height="wrap_content"
+            android:layout_margin="@dimen/fab_margin"
+            android:layout_width="wrap_content"
+            android:tint="@color/white"
+            app:layout_anchor="@+id/app_bar_layout"
+            app:layout_anchorGravity="bottom|end"
+            app:srcCompat="@drawable/ic_edit_black_24dp"/>
 
-                                <TextView
-                                    android:layout_height="match_parent"
-                                    android:layout_width="wrap_content"
-                                    android:text="@string/change_customer_status"
-                                    android:textSize="@dimen/text_size_12sp"/>
-
-                            </LinearLayout>
-
-                        </LinearLayout>
-
-
-                    </LinearLayout>
-
-                    <LinearLayout
-                        android:clickable="true"
-                        android:foreground="?android:attr/selectableItemBackground"
-                        android:id="@+id/ll_activities"
-                        android:layout_height="match_parent"
-                        android:layout_width="match_parent"
-                        android:orientation="horizontal"
-                        android:padding="@dimen/layout_padding_16dp">
-
-                        <LinearLayout
-                            android:layout_height="wrap_content"
-                            android:layout_width="wrap_content"
-                            android:orientation="horizontal">
-
-                            <ImageView
-                                style="@style/circleLayout"
-                                android:layout_height="35dp"
-                                android:layout_width="35dp"
-                                app:srcCompat="@drawable/ic_event_black_24dp"/>
-
-                            <LinearLayout
-                                android:layout_height="wrap_content"
-                                android:layout_marginLeft="@dimen/layout_padding_8dp"
-                                android:layout_marginStart="@dimen/layout_padding_8dp"
-                                android:layout_width="match_parent"
-                                android:orientation="vertical">
-
-                                <TextView
-                                    android:layout_height="wrap_content"
-                                    android:layout_width="wrap_content"
-                                    android:text="@string/activities"/>
-
-                                <TextView
-                                    android:layout_height="match_parent"
-                                    android:layout_width="wrap_content"
-                                    android:text="@string/recent_activities"
-                                    android:textSize="@dimen/text_size_12sp"/>
-
-                            </LinearLayout>
-
-                        </LinearLayout>
-
-
-                    </LinearLayout>
-
-                </LinearLayout>
-
-            </android.support.v7.widget.CardView>
-
-        </LinearLayout>
-
-    </android.support.v4.widget.NestedScrollView>
+    </android.support.design.widget.CoordinatorLayout>
 
     <include
-        layout="@layout/layout_error"
-        android:id="@+id/rl_error"
+        layout="@layout/layout_exception_handler"
+        android:id="@+id/layout_error"
         android:visibility="gone"/>
 
-    <include
-        layout="@layout/layout_collapsing_header_view"
-        android:id="@+id/float_header_view"
-        android:layout_height="wrap_content"
-        android:layout_width="match_parent"
-        app:layout_behavior="org.apache.fineract.ui.views.ViewBehavior"
-    />
-
-    <android.support.design.widget.FloatingActionButton
-        android:clickable="true"
-        android:id="@+id/fab_edit_customer"
-        android:layout_height="wrap_content"
-        android:layout_margin="@dimen/fab_margin"
-        android:layout_width="wrap_content"
-        android:tint="@color/white"
-        app:layout_anchor="@+id/app_bar_layout"
-        app:layout_anchorGravity="bottom|end"
-        app:srcCompat="@drawable/ic_edit_black_24dp"/>
-
 </android.support.design.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/fragment_customer_list.xml b/app/src/main/res/layout/fragment_customer_list.xml
index 5221bb3..7ebae36 100644
--- a/app/src/main/res/layout/fragment_customer_list.xml
+++ b/app/src/main/res/layout/fragment_customer_list.xml
@@ -20,12 +20,13 @@
     </android.support.v4.widget.SwipeRefreshLayout>
 
     <include
-        layout="@layout/layout_error"
-        android:id="@+id/rl_error"
+        layout="@layout/layout_exception_handler"
+        android:id="@+id/layout_error"
         android:visibility="gone"/>
 
     <android.support.design.widget.FloatingActionButton
         android:clickable="true"
+        android:focusable="true"
         android:id="@+id/fab_add_customer"
         android:layout_gravity="bottom|end"
         android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/fragment_customer_loans.xml b/app/src/main/res/layout/fragment_customer_loans.xml
index 2176dff..3ca9ff1 100644
--- a/app/src/main/res/layout/fragment_customer_loans.xml
+++ b/app/src/main/res/layout/fragment_customer_loans.xml
@@ -20,12 +20,13 @@
     </android.support.v4.widget.SwipeRefreshLayout>
 
     <include
-        layout="@layout/layout_error"
-        android:id="@+id/rl_error"
+        layout="@layout/layout_exception_handler"
+        android:id="@+id/layout_error"
         android:visibility="gone"/>
 
     <android.support.design.widget.FloatingActionButton
         android:clickable="true"
+        android:focusable="true"
         android:id="@+id/fab_add_customer_loan"
         android:layout_gravity="bottom|end"
         android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/fragment_form_deposit_assign_product.xml b/app/src/main/res/layout/fragment_form_deposit_assign_product.xml
index 1eebcb8..17b17e7 100644
--- a/app/src/main/res/layout/fragment_form_deposit_assign_product.xml
+++ b/app/src/main/res/layout/fragment_form_deposit_assign_product.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
 <android.support.design.widget.CoordinatorLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/cl_deposit_assign_product"
     android:layout_height="match_parent"
     android:layout_width="match_parent"
-    android:visibility="invisible">
+    android:visibility="visible">
 
     <android.support.v4.widget.NestedScrollView
         xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:app="http://schemas.android.com/apk/res-auto"
         android:background="@color/gray_light"
-        android:id="@+id/ncv_loan_details"
+        android:id="@+id/ncv_deposit_assign_product"
         android:layout_height="match_parent"
         android:layout_width="match_parent"
-        android:visibility="visible"
+        android:visibility="gone"
         app:layout_behavior="@string/appbar_scrolling_view_behavior">
 
         <android.support.v7.widget.CardView
@@ -100,4 +99,9 @@
 
     </android.support.v4.widget.NestedScrollView>
 
+    <include
+        layout="@layout/layout_exception_handler"
+        android:id="@+id/layout_error"
+        android:visibility="gone"/>
+
 </android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_identification_details.xml b/app/src/main/res/layout/fragment_identification_details.xml
index 15f081a..0c4fa5b 100644
--- a/app/src/main/res/layout/fragment_identification_details.xml
+++ b/app/src/main/res/layout/fragment_identification_details.xml
@@ -213,16 +213,15 @@
                         android:layout_height="200dp"
                         android:textSize="@dimen/text_size_12sp"
                         android:clickable="true"
+                        android:focusable="true"
                         android:foreground="?android:attr/selectableItemBackground"
                         android:text="@string/loading_scans_please_wait"/>
 
                     <include
-                        layout="@layout/layout_error"
-                        android:id="@+id/rl_error"
+                        android:layout_height="300dp"
                         android:layout_width="match_parent"
-                        android:layout_height="200dp"
-                        android:clickable="true"
-                        android:foreground="?android:attr/selectableItemBackground"
+                        layout="@layout/layout_exception_handler"
+                        android:id="@+id/layout_error"
                         android:visibility="gone"/>
 
                 </FrameLayout>
@@ -235,6 +234,7 @@
 
     <android.support.design.widget.FloatingActionButton
         android:clickable="true"
+        android:focusable="true"
         android:id="@+id/fab_upload_identification_scan_card"
         android:layout_gravity="bottom|end"
         android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/fragment_identification_list.xml b/app/src/main/res/layout/fragment_identification_list.xml
index af0d298..202d482 100644
--- a/app/src/main/res/layout/fragment_identification_list.xml
+++ b/app/src/main/res/layout/fragment_identification_list.xml
@@ -21,12 +21,13 @@
     </android.support.v4.widget.SwipeRefreshLayout>
 
     <include
-        layout="@layout/layout_error"
-        android:id="@+id/rl_error"
+        layout="@layout/layout_exception_handler"
+        android:id="@+id/layout_error"
         android:visibility="gone"/>
 
     <android.support.design.widget.FloatingActionButton
         android:clickable="true"
+        android:focusable="true"
         android:id="@+id/fab_add_identification_card"
         android:layout_gravity="bottom|end"
         android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/fragment_loan_details.xml b/app/src/main/res/layout/fragment_loan_details.xml
index 382eb4b..c8b05d7 100644
--- a/app/src/main/res/layout/fragment_loan_details.xml
+++ b/app/src/main/res/layout/fragment_loan_details.xml
@@ -4,7 +4,7 @@
     android:id="@+id/cl_loan_details"
     android:layout_height="match_parent"
     android:layout_width="match_parent"
-    android:visibility="invisible">
+    android:visibility="visible">
 
     <android.support.v4.widget.NestedScrollView
         xmlns:android="http://schemas.android.com/apk/res/android"
@@ -13,7 +13,7 @@
         android:id="@+id/ncv_loan_details"
         android:layout_height="match_parent"
         android:layout_width="match_parent"
-        android:visibility="visible"
+        android:visibility="invisible"
         app:layout_behavior="@string/appbar_scrolling_view_behavior">
 
         <android.support.v7.widget.CardView
@@ -307,4 +307,9 @@
 
     </android.support.v4.widget.NestedScrollView>
 
+    <include
+        layout="@layout/layout_exception_handler"
+        android:id="@+id/layout_error"
+        android:visibility="gone"/>
+
 </android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_planned_payment.xml b/app/src/main/res/layout/fragment_planned_payment.xml
index bad381c..b340779 100644
--- a/app/src/main/res/layout/fragment_planned_payment.xml
+++ b/app/src/main/res/layout/fragment_planned_payment.xml
@@ -2,12 +2,12 @@
 <android.support.design.widget.CoordinatorLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_height="match_parent"
-    android:layout_width="match_parent" >
+    android:layout_width="match_parent">
 
     <LinearLayout
         xmlns:android="http://schemas.android.com/apk/res/android"
-        android:animateLayoutChanges="true"
-        style="@style/LinearLayout.Base">
+        style="@style/LinearLayout.Base"
+        android:animateLayoutChanges="true">
 
         <LinearLayout
             android:layout_height="wrap_content"
@@ -25,6 +25,7 @@
 
                 <LinearLayout
                     android:clickable="true"
+                    android:focusable="true"
                     android:foreground="?android:attr/selectableItemBackground"
                     android:id="@+id/ll_toolbar_date"
                     android:layout_height="match_parent"
@@ -33,10 +34,10 @@
                     android:padding="16dp">
 
                     <TextView
-                        android:id="@+id/tv_toolbar_date"
                         android:drawableEnd="@drawable/ic_arrow_drop_down_black_24dp"
                         android:drawableRight="@drawable/ic_arrow_drop_down_black_24dp"
                         android:gravity="center"
+                        android:id="@+id/tv_toolbar_date"
                         android:layout_gravity="center"
                         android:layout_height="wrap_content"
                         android:layout_width="wrap_content"
@@ -54,6 +55,7 @@
             xmlns:app="http://schemas.android.com/apk/res-auto"
             android:background="@color/white"
             android:clickable="true"
+            android:focusable="true"
             android:foreground="?android:attr/selectableItemBackground"
             android:id="@+id/cv_planned_payment"
             android:layout_height="wrap_content"
@@ -68,39 +70,46 @@
                 <CalendarView
                     android:id="@+id/calender_view_payment"
                     android:layout_height="300dp"
-                    android:layout_width="match_parent" />
+                    android:layout_width="match_parent"/>
 
                 <android.support.v7.widget.AppCompatButton
                     android:id="@+id/btn_load_planned_payment"
                     android:layout_gravity="end"
-                    android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_margin="@dimen/layout_padding_8dp"
-                    android:textAllCaps="false"
-                    android:text="@string/load_payment"/>
+                    android:layout_width="wrap_content"
+                    android:text="@string/load_payment"
+                    android:textAllCaps="false"/>
 
             </LinearLayout>
 
         </android.support.v7.widget.CardView>
 
-        <android.support.v4.widget.SwipeRefreshLayout
-            android:id="@+id/swipe_container"
+        <android.support.design.widget.CoordinatorLayout
+            xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_height="match_parent"
             android:layout_width="match_parent">
 
-            <android.support.v7.widget.RecyclerView
-                android:id="@+id/rv_planned_payment"
-                android:layout_centerHorizontal="true"
-                android:layout_height="0dp"
-                android:layout_marginBottom="@dimen/layout_padding_30dp"
-                android:layout_weight="1"
-                android:layout_width="wrap_content"/>
-        </android.support.v4.widget.SwipeRefreshLayout>
+            <android.support.v4.widget.SwipeRefreshLayout
+                android:id="@+id/swipe_container"
+                android:layout_height="match_parent"
+                android:layout_width="match_parent">
 
-        <include
-            layout="@layout/layout_error"
-            android:id="@+id/rl_error"
-            android:visibility="gone"/>
+                <android.support.v7.widget.RecyclerView
+                    android:id="@+id/rv_planned_payment"
+                    android:layout_centerHorizontal="true"
+                    android:layout_height="0dp"
+                    android:layout_marginBottom="@dimen/layout_padding_30dp"
+                    android:layout_weight="1"
+                    android:layout_width="wrap_content"/>
+            </android.support.v4.widget.SwipeRefreshLayout>
+
+            <include
+                layout="@layout/layout_exception_handler"
+                android:id="@+id/layout_error"
+                android:visibility="gone"/>
+
+        </android.support.design.widget.CoordinatorLayout>
 
     </LinearLayout>
 
diff --git a/app/src/main/res/layout/fragment_roles_list.xml b/app/src/main/res/layout/fragment_roles_list.xml
index fd10e39..466dec4 100644
--- a/app/src/main/res/layout/fragment_roles_list.xml
+++ b/app/src/main/res/layout/fragment_roles_list.xml
@@ -19,12 +19,13 @@
     </android.support.v4.widget.SwipeRefreshLayout>
 
     <include
-        layout="@layout/layout_error"
-        android:id="@+id/rl_error"
+        layout="@layout/layout_exception_handler"
+        android:id="@+id/layout_error"
         android:visibility="gone"/>
 
     <android.support.design.widget.FloatingActionButton
         android:clickable="true"
+        android:focusable="true"
         android:id="@+id/fab_add_role"
         android:layout_gravity="bottom|end"
         android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/layout_exception_handler.xml b/app/src/main/res/layout/layout_exception_handler.xml
index 9bbd38e..724d4bc 100644
--- a/app/src/main/res/layout/layout_exception_handler.xml
+++ b/app/src/main/res/layout/layout_exception_handler.xml
@@ -13,9 +13,10 @@
         android:layout_height="match_parent"
         android:layout_width="match_parent"
         android:orientation="vertical"
-        android:visibility="visible">
+        android:visibility="gone">
 
         <ImageView
+            android:id="@+id/iv_error_no_connection"
             android:contentDescription="@string/status_image"
             android:layout_gravity="center|center_horizontal"
             android:layout_height="70dp"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e0f86e4..965f297 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -29,6 +29,7 @@
     <string name="current_status">Current status</string>
     <string name="management">Management</string>
     <string name="identification_cards">Identification cards</string>
+    <string name="identification_card">Identification card</string>
     <string name="view_identification_card">View identification cards</string>
     <string name="tasks">Tasks</string>
     <string name="change_customer_status">Change the status of customer</string>
@@ -54,6 +55,7 @@
     <string name="payment_cycle">Payment cycle</string>
     <string name="term">Term</string>
     <string name="planned_payment">Planned Payment</string>
+    <string name="planned_payments">Planned Payments</string>
     <string name="view_payments">View payments</string>
     <string name="debt_income_report">Debt Income Report</string>
     <string name="view_debt_income_report">View debt income report</string>
@@ -70,6 +72,7 @@
     <string name="balance">Balance</string>
     <string name="beneficiaries">Beneficiaries</string>
     <string name="deposit_account">Deposit account</string>
+    <string name="deposit_product">Deposit product</string>
     <string name="remaining_principal">Remaining principal</string>
     <string name="load_payment">Load Payment</string>
     <string name="short_name">Short name</string>
@@ -178,6 +181,12 @@
     <string name="oh_no">Oh no!</string>
     <string name="empty_ui_message">No %1$s Found</string>
     <string name="empty_ui_sub_message">Tap to add %1$s</string>
+    <string name="customer_details">Customer details</string>
+    <string name="create_new_loan">Create new loan</string>
+    <string name="identification_card_scans">Identification card scans</string>
+    <string name="identification_card_scan">Identification card scan</string>
+    <string name="role">Role</string>
+    <string name="customer_name">%1$s %2$s</string>
 
     <!--Edit Text hint required-->
     <string name="required_account">Account*</string>
@@ -239,7 +248,7 @@
     <string name="error_updating_status">Error while updating customer</string>
     <string name="error_fetching_identification_list">Error while fetching identification cards</string>
     <string name="error_creating_identification_card">Error while creating identification card</string>
-    <string name="error_editing_identification_card">Error while editing identification card</string>
+    <string name="error_updating_identification_card">Error while updating identification card</string>
     <string name="error_fetching_scans">Error while fetching scan cards</string>
     <string name="error_uploading_identification_scan_card">Error while uploading identification scan card</string>
     <string name="error_deleting_identification_scan_card">Error while deleting identification scan card</string>
@@ -251,6 +260,9 @@
     <string name="error_fetching_customer_activities">Error fetching customer activities</string>
     <string name="error_fetching_roles">Error fetching roles</string>
     <string name="error_sorry_not_able_to_load">Sorry we weren\'t able to load</string>
+    <string name="error_fetching_customer_details">Failed to fetch customer details</string>
+    <string name="error_fetching_deposit_product">Failed to fetch deposit product</string>
+    <string name="error_failed_to_refresh_customers">Failed to refresh customers</string>
 
 
     <!--Material Dialog-->
