diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/ChangedItemsAdapter.java b/mobile/src/main/java/org/openhab/habdroid/ui/ChangedItemsAdapter.java
deleted file mode 100644
index 78da30a910d51d2440c3d732386e0775b1894124..0000000000000000000000000000000000000000
--- a/mobile/src/main/java/org/openhab/habdroid/ui/ChangedItemsAdapter.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package org.openhab.habdroid.ui;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.recyclerview.widget.RecyclerView;
-
-import org.openhab.habdroid.R;
-import org.openhab.habdroid.model.ChangedItem;
-import org.openhab.habdroid.model.Item;
-import org.openhab.habdroid.model.Recognition;
-import org.openhab.habdroid.model.Widget;
-
-import java.text.DateFormat;
-import java.util.List;
-
-public class ChangedItemsAdapter extends RecyclerView.Adapter<ChangedItemsAdapter.CustomViewHolder> {
-
-    private List<ChangedItem> mChangedItems;
-    private Context mContext;
-
-    private static final int TYPE_GENERICITEM = 0;
-    private static final int TYPE_FRAME = 1;
-    private static final int TYPE_GROUP = 2;
-    private static final int TYPE_SWITCH = 3;
-    private static final int TYPE_TEXT = 4;
-    private static final int TYPE_SLIDER = 5;
-    private static final int TYPE_IMAGE = 6;
-    private static final int TYPE_SELECTION = 7;
-    private static final int TYPE_SECTIONSWITCH = 8;
-    private static final int TYPE_ROLLERSHUTTER = 9;
-    private static final int TYPE_SETPOINT = 10;
-    private static final int TYPE_CHART = 11;
-    private static final int TYPE_VIDEO = 12;
-    private static final int TYPE_WEB = 13;
-    private static final int TYPE_COLOR = 14;
-    private static final int TYPE_VIDEO_MJPEG = 15;
-    private static final int TYPE_LOCATION = 16;
-
-    public ChangedItemsAdapter(Context context, List<ChangedItem> changedItems){
-        mContext = context;
-        mChangedItems = changedItems;
-
-    }
-
-    class CustomViewHolder extends RecyclerView.ViewHolder {
-
-        public final View mView;
-
-        TextView recDescription;
-        TextView recType;
-        TextView recActivity;
-        TextView recTimestamp;
-        TextView recChangedState;
-
-        CustomViewHolder(View itemView) {
-            super(itemView);
-            mView = itemView;
-
-            recDescription = mView.findViewById(R.id.recognitionDescription);
-            recType = mView.findViewById(R.id.recognitionType);
-            recActivity = mView.findViewById(R.id.recognitionActivity);
-            recTimestamp = mView.findViewById(R.id.recognitionTimestamp);
-            recChangedState = mView.findViewById(R.id.recognitionChangedState);
-
-        }
-    }
-
-
-    @Override
-    public CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
-        View view = layoutInflater.inflate(R.layout.custom_row, parent, false);
-        return new CustomViewHolder(view);
-    }
-
-    @Override
-    public void onBindViewHolder(CustomViewHolder holder, int position) {
-        ChangedItem item = mChangedItems.get(position);
-
-    }
-
-    @Override
-    public int getItemCount() {
-        return mChangedItems == null ? 0 : mChangedItems.size();
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        return getItemViewType(mChangedItems.get(position));
-    }
-
-    private int getItemViewType(ChangedItem changedItem) {
-        switch (changedItem.getType()) {
-            case ColorLamp:
-                return TYPE_COLOR;
-            case DimmableLamp:
-                return TYPE_SLIDER;
-            default:
-                throw new IllegalArgumentException("ChangedItem type " + changedItem.getType() + " is not known");
-        }
-    }
-}
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/MainActivity.java b/mobile/src/main/java/org/openhab/habdroid/ui/MainActivity.java
index 7fb791e504f1adfac76130c96394e40a4cc421ec..f487538c0a61184207cf3e3d1a6c3ca3a10d3b1a 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/MainActivity.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/MainActivity.java
@@ -79,6 +79,7 @@ import org.openhab.habdroid.core.connection.exception.NoUrlInformationException;
 import org.openhab.habdroid.model.LinkedPage;
 import org.openhab.habdroid.model.ServerProperties;
 import org.openhab.habdroid.model.Sitemap;
+import org.openhab.habdroid.model.Widget;
 import org.openhab.habdroid.ui.activity.ContentController;
 import org.openhab.habdroid.util.AsyncHttpClient;
 import org.openhab.habdroid.util.AsyncServiceResolver;
@@ -94,6 +95,7 @@ import java.security.cert.CertPathValidatorException;
 import java.security.cert.CertificateExpiredException;
 import java.security.cert.CertificateNotYetValidException;
 import java.security.cert.CertificateRevokedException;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
 
@@ -140,6 +142,8 @@ public class MainActivity extends AppCompatActivity implements
     private ServerProperties.UpdateHandle mPropsUpdateHandle;
     private boolean mStarted;
 
+    private ArrayList<Widget> mWidgets = new ArrayList<>();
+
     /**
      * Daydreaming gets us into a funk when in fullscreen, this allows us to
      * reset ourselves to fullscreen.
@@ -255,6 +259,11 @@ public class MainActivity extends AppCompatActivity implements
         prefsEditor.apply();
     }
 
+    public void updateWidgets(List<Widget> widgets) {
+        mWidgets.clear();
+        mWidgets.addAll(widgets);
+    }
+
     private void handleConnectionChange() {
         if (mConnection instanceof DemoConnection) {
             showSnackbar(R.string.info_demo_mode_short);
@@ -568,6 +577,7 @@ public class MainActivity extends AppCompatActivity implements
                     return true;
                 case R.id.recognitions:
                     openRecognitions();
+
                     return true;
                 default:
                     break;
@@ -690,7 +700,7 @@ public class MainActivity extends AppCompatActivity implements
     private void openRecognitions() {
         Intent recognitionsIntent = new Intent(this, RecognitionsActivity.class);
         recognitionsIntent.putExtra("serverProperties", mServerProperties);
-
+        recognitionsIntent.putParcelableArrayListExtra("widgets", mWidgets);
         startActivityForResult(recognitionsIntent, INFO_REQUEST_CODE);
         Util.overridePendingTransition(this, false);
     }
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsActivity.java b/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsActivity.java
index 11359325d7ce3aec53425607c9e120f3cca451c9..85f4b5d35bd01ac2d3eb23a7488b39af0f2b9330 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsActivity.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsActivity.java
@@ -2,16 +2,23 @@ package org.openhab.habdroid.ui;
 
 import android.app.ProgressDialog;
 import android.os.Bundle;
+import android.util.Log;
 import android.view.MenuItem;
 
 import org.openhab.habdroid.R;
+import org.openhab.habdroid.core.connection.Connection;
+import org.openhab.habdroid.core.connection.ConnectionFactory;
+import org.openhab.habdroid.core.connection.exception.ConnectionException;
+import org.openhab.habdroid.model.ChangedItem;
 import org.openhab.habdroid.model.Recognition;
+import org.openhab.habdroid.model.Widget;
 import org.openhab.habdroid.util.Util;
 import org.openhab.habdroid.util.GetDataService;
 import org.openhab.habdroid.util.RetrofitClientInstance;
 
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Locale;
@@ -37,12 +44,8 @@ import android.widget.Toast;
 
 public class RecognitionsActivity extends AppCompatActivity{
 
-    private RecognitionsAdapter adapter;
-    private RecyclerView recyclerView;
-    private TextView mCurrentActivityTitle;
-    private TextView mCurrentActivityTime;
-    private RecyclerView mCurrentActivityChangedItems;
-    private ChangedItemsAdapter mChangedItemsAdapter;
+    private RecognitionsAdapter mPastRecognitionsAdapter;
+    private RecyclerView mRvPastRecognitions;
 
 
     ProgressDialog progressDialog;
@@ -83,7 +86,7 @@ public class RecognitionsActivity extends AppCompatActivity{
                 progressDialog.dismiss();
                 //generateDataList(response.body());
                 generateCurrentActivity(response.body().get(0));
-
+                generatePastActivities(response.body().subList(1, response.body().size()));
             }
 
             @Override
@@ -96,15 +99,46 @@ public class RecognitionsActivity extends AppCompatActivity{
     }
 
     private void generateCurrentActivity(Recognition recognition) {
-        mCurrentActivityTitle = findViewById(R.id.text_recognition_current_title);
-        mCurrentActivityTime = findViewById(R.id.text_recognition_current_time);
-        mCurrentActivityChangedItems = findViewById(R.id.rv_recognition_current_items);
+        TextView mCurrentActivityTitle = findViewById(R.id.text_recognition_current_title);
+        TextView mCurrentActivityTime = findViewById(R.id.text_recognition_current_time);
+        RecyclerView mCurrentActivityChangedItems = findViewById(R.id.rv_recognition_current_items);
         mCurrentActivityTitle.setText(recognition.getDescription().toString());
         DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT, Locale.US);
         mCurrentActivityTime.setText(dateFormat.format(new Date(recognition.getTimestamp())));
-        mChangedItemsAdapter = new ChangedItemsAdapter(this.getApplicationContext(), recognition.getChangedItems());
-        mCurrentActivityChangedItems.setLayoutManager(new LinearLayoutManager(this));
-        mCurrentActivityChangedItems.setAdapter(mChangedItemsAdapter);
+        ArrayList<Widget> widgets = getIntent().getParcelableArrayListExtra("widgets");
+        ArrayList<Widget> activityWidgets = new ArrayList<>();
+        for (ChangedItem ci : recognition.getChangedItems()) {
+            for (Widget widget : widgets) {
+                if (widget.item() != null && ci.getName().equals(widget.item().name())) {
+                    activityWidgets.add(widget);
+                }
+            }
+        }
+
+        try {
+            Connection c = ConnectionFactory.getUsableConnection();
+            if (c != null) {
+                WidgetAdapter mChangedItemsAdapter = new WidgetAdapter(this, c, null);
+                mChangedItemsAdapter.update(activityWidgets, false);
+                mCurrentActivityChangedItems.setLayoutManager(new LinearLayoutManager(this));
+                mCurrentActivityChangedItems.setAdapter(mChangedItemsAdapter);
+            }
+        } catch (ConnectionException e) {
+            Toast.makeText(this, "No connection", Toast.LENGTH_LONG).show();
+        }
+    }
+
+    private void generatePastActivities(List<Recognition> recognitions) {
+        ArrayList<Recognition> filteredRecognitions = new ArrayList<>();
+        for (Recognition r : recognitions) {
+            if (r.getType().equals("recognition")) {
+                filteredRecognitions.add(r);
+            }
+        }
+        mRvPastRecognitions = findViewById(R.id.rv_past_recognitions);
+        mPastRecognitionsAdapter = new RecognitionsAdapter(this, filteredRecognitions);
+        mRvPastRecognitions.setLayoutManager(new LinearLayoutManager(this));
+        mRvPastRecognitions.setAdapter(mPastRecognitionsAdapter);
     }
 
     /*
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsAdapter.java b/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsAdapter.java
index 5ab38250f59d35446cc7fbd9bd211c98d62b5add..6d379db96ef8c0f9064cbbd54349a0a73fb43cd4 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsAdapter.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsAdapter.java
@@ -7,10 +7,13 @@ import android.view.ViewGroup;
 import android.widget.TextView;
 
 import org.openhab.habdroid.R;
+import org.openhab.habdroid.model.ChangedItem;
 import org.openhab.habdroid.model.Recognition;
 
 import java.text.DateFormat;
+import java.util.Date;
 import java.util.List;
+import java.util.Locale;
 
 import androidx.recyclerview.widget.RecyclerView;
 
@@ -22,35 +25,27 @@ import androidx.recyclerview.widget.RecyclerView;
 
 public class RecognitionsAdapter extends RecyclerView.Adapter<RecognitionsAdapter.CustomViewHolder> {
 
-    private List<Recognition> dataList;
-    private Context context;
+    private List<Recognition> mRecognitions;
+    private Context mContext;
 
-    public RecognitionsAdapter(Context context, List<Recognition> dataList/*, List<ChangedItem> changedItemList*/){
-        this.context = context;
-        this.dataList = dataList;
+    public RecognitionsAdapter(Context context, List<Recognition> recognitions){
+        this.mContext = context;
+        this.mRecognitions = recognitions;
 
     }
 
     class CustomViewHolder extends RecyclerView.ViewHolder {
 
-        public final View mView;
+        final View mView;
 
-        TextView recDescription;
-        TextView recType;
-        TextView recActivity;
-        TextView recTimestamp;
-        TextView recChangedState;
+        TextView recognitionTitle;
+        TextView recognitionTime;
 
         CustomViewHolder(View itemView) {
             super(itemView);
             mView = itemView;
-
-            recDescription = mView.findViewById(R.id.recognitionDescription);
-            recType = mView.findViewById(R.id.recognitionType);
-            recActivity = mView.findViewById(R.id.recognitionActivity);
-            recTimestamp = mView.findViewById(R.id.recognitionTimestamp);
-            recChangedState = mView.findViewById(R.id.recognitionChangedState);
-
+            recognitionTime = itemView.findViewById(R.id.text_recognition_past_time);
+            recognitionTitle = itemView.findViewById(R.id.text_recognition_past_title);
         }
     }
 
@@ -58,52 +53,20 @@ public class RecognitionsAdapter extends RecyclerView.Adapter<RecognitionsAdapte
     @Override
     public CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
         LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
-        View view = layoutInflater.inflate(R.layout.custom_row, parent, false);
+        View view = layoutInflater.inflate(R.layout.list_item_past_recognition, parent, false);
         return new CustomViewHolder(view);
     }
 
     @Override
     public void onBindViewHolder(CustomViewHolder holder, int position) {
-        int identifier = dataList.get(position).getIdentifier();
-        String type = dataList.get(position).getType();
-        Object activity = dataList.get(position).getActivity();
-        Object description = dataList.get(position).getDescription();
-        int timestamp = dataList.get(position).getTimestamp();
-
-        // ChangedItem
-        String name;
-        String state;
-        String label;
-
-
-//        String changedItem = String.join(",", name, state, label);
-//        if (dataList.get(position).getChangedItems().size() == 3) {
-        StringBuilder sb = new StringBuilder();
-            for (int i = 0; i < dataList.get(position).getChangedItems().size(); i++) {
-                 name = dataList.get(position).getChangedItems().get(i).getName();
-                 state = dataList.get(position).getChangedItems().get(i).getState();
-                 label = dataList.get(position).getChangedItems().get(i).getLabel();
-                String changedItem = String.join(",", name, state, label);
-
-//                changedStates.add(changedItem);
-                sb.append(changedItem).append('\n');
-
-//                Uncomment line 104 and comment out  line 114 and 115 to see the alternate behavior
-//                holder.recChangedState1.setText(changedItem);
-
-            }
-
-
-        holder.recDescription.setText((CharSequence) description);
-        holder.recType.setText(type);
-        holder.recActivity.setText((CharSequence) activity);
-        holder.recTimestamp.setText(DateFormat.getDateTimeInstance().format(timestamp));
-        holder.recChangedState.setText(sb.toString());
-
+        Recognition item = mRecognitions.get(position);
+        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT, Locale.US);
+        holder.recognitionTime.setText(dateFormat.format(new Date(item.getTimestamp())));
+        holder.recognitionTitle.setText(item.getDescription().toString());
     }
 
     @Override
     public int getItemCount() {
-        return dataList == null ? 0 : dataList.size();
+        return mRecognitions == null ? 0 : mRecognitions.size();
     }
 }
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/WidgetListFragment.java b/mobile/src/main/java/org/openhab/habdroid/ui/WidgetListFragment.java
index a1a949280f9324238bd36f480d8865e768045fac..84fa58260756bd309e377cc24329c212d32959b4 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/WidgetListFragment.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/WidgetListFragment.java
@@ -31,6 +31,7 @@ import org.openhab.habdroid.model.Widget;
 import org.openhab.habdroid.util.CacheManager;
 import org.openhab.habdroid.util.Util;
 
+import java.lang.reflect.Array;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
@@ -80,7 +81,7 @@ public class WidgetListFragment extends Fragment
         Log.d(TAG, "onActivityCreated()");
         Log.d(TAG, "isAdded = " + isAdded());
         mActivity = (MainActivity) getActivity();
-
+        mActivity.updateWidgets(mWidgets);
         mAdapter = new WidgetAdapter(mActivity, mActivity.getConnection(), this);
 
         mLayoutManager = new LinearLayoutManager(mActivity);
@@ -251,9 +252,10 @@ public class WidgetListFragment extends Fragment
         mAdapter.setSelectedPosition(-1);
     }
 
+    public ArrayList<Widget> mWidgets = new ArrayList<>();
     public void update(String pageTitle, List<Widget> widgets) {
         mTitle = pageTitle;
-
+        mWidgets.addAll(widgets);
         if (mAdapter != null) {
             mAdapter.update(widgets, mRefreshLayout.isRefreshing());
             setHighlightedPageLink(mHighlightedPageLink);
@@ -261,6 +263,7 @@ public class WidgetListFragment extends Fragment
         }
         if (mActivity != null && mIsVisible) {
             mActivity.updateTitle();
+            mActivity.updateWidgets(widgets);
         }
     }
 
diff --git a/mobile/src/main/res/layout/activity_recognitions.xml b/mobile/src/main/res/layout/activity_recognitions.xml
index 71308707a01634b998eff637a18c3c9844e5832d..38d89c20efedc78a39618b0e08dd70559a35422c 100644
--- a/mobile/src/main/res/layout/activity_recognitions.xml
+++ b/mobile/src/main/res/layout/activity_recognitions.xml
@@ -1,7 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-
-<!--Layout for OpenLicht Recognition--><!--By Muhammad Ibrahim Rahman-->
-
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
@@ -13,38 +10,8 @@
         android:layout_width="match_parent"
         android:layout_height="?attr/actionBarSize"
         android:background="?attr/colorPrimary"
-        android:elevation="8dp"
         app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
         app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
-    <!--
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:background="?android:activatedBackgroundIndicator"
-            android:descendantFocusability="blocksDescendants">
-
-            <include layout="@layout/widgetlist_icontext" />
-
-            <ImageButton
-                style="@style/ActionButton"
-                android:id="@+id/up_button"
-                android:contentDescription="@string/content_description_color_up"
-                android:src="?themedArrowUpIcon" />
-
-            <ImageButton
-                style="@style/ActionButton"
-                android:id="@+id/select_color_button"
-                android:contentDescription="@string/content_description_open_color_wheel"
-                android:src="?themedColorIcon" />
-
-            <ImageButton
-                style="@style/ActionButton"
-                android:id="@+id/down_button"
-                android:contentDescription="@string/content_description_color_down"
-                android:src="?themedArrowDownIcon" />
-
-        </LinearLayout>
-    -->
 
     <com.google.android.material.card.MaterialCardView
         android:id="@+id/card_recognition_current"
@@ -89,9 +56,21 @@
 
         </LinearLayout>
     </com.google.android.material.card.MaterialCardView>
-    <!--
+
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="Past activities"
+        android:textAllCaps="true"
+        android:textColor="@color/black"
+        android:layout_marginTop="16dp"
+        android:layout_marginStart="24dp"
+        android:layout_marginEnd="24dp"
+        android:textSize="10dp"/>
+
     <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/customRecyclerView"
+        android:id="@+id/rv_past_recognitions"
         android:layout_width="match_parent"
-        android:layout_height="match_parent" />-->
+        android:layout_height="match_parent" />
+
 </LinearLayout>
\ No newline at end of file
diff --git a/mobile/src/main/res/layout/list_item_past_recognition.xml b/mobile/src/main/res/layout/list_item_past_recognition.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e22814d735ec8786245cf08054035242ad816337
--- /dev/null
+++ b/mobile/src/main/res/layout/list_item_past_recognition.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<com.google.android.material.card.MaterialCardView
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        style="@style/Widget.MaterialComponents.CardView"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="@dimen/mtrl_card_spacing"
+        android:layout_marginTop="@dimen/mtrl_card_spacing"
+        android:layout_marginRight="@dimen/mtrl_card_spacing">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:padding="16dp">
+
+            <TextView
+                android:id="@+id/text_recognition_past_title"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textColor="@color/black"
+                android:textSize="18sp" />
+
+            <TextView
+                android:id="@+id/text_recognition_past_time"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textSize="12sp"/>
+
+        </LinearLayout>
+    </com.google.android.material.card.MaterialCardView>