diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/MainActivity.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/MainActivity.java
index 77f96771ba9535de854e0a28b329d25d6a996cab..26e7bc21a7187b2bbe050e0addeb71a183329ace 100644
--- a/app/src/main/java/com/ireallydontcare/viet/posseidon/MainActivity.java
+++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/MainActivity.java
@@ -9,7 +9,6 @@ import android.support.v7.app.AppCompatActivity;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.Toolbar;
-import android.util.Log;
 import android.view.View;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -17,14 +16,16 @@ import android.view.MenuItem;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.ireallydontcare.viet.posseidon.adapter.SubjectAdapter;
+import com.ireallydontcare.viet.posseidon.data.EventDatabase;
 import com.ireallydontcare.viet.posseidon.data.SubjectDatabase;
 import com.ireallydontcare.viet.posseidon.fragments.NewDialogSubjectFragment;
+import com.ireallydontcare.viet.posseidon.json.eventJsonObject;
 import com.ireallydontcare.viet.posseidon.json.subjectJsonObject;
+import com.ireallydontcare.viet.posseidon.model.Event;
 import com.ireallydontcare.viet.posseidon.model.Subject;
-import com.ireallydontcare.viet.posseidon.qr.QRActivity;
-import com.ireallydontcare.viet.posseidon.qr.QRReaderActivity;
 import com.ireallydontcare.viet.posseidon.qr.ScannedBarcodeActivity;
 
+import java.util.ArrayList;
 import java.util.List;
 
 public class MainActivity extends AppCompatActivity
@@ -35,6 +36,8 @@ public class MainActivity extends AppCompatActivity
     private RecyclerView.LayoutManager subjectLayoutManager;
     private SubjectDatabase database;
 
+    private MainActivity ref = this;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -116,22 +119,6 @@ public class MainActivity extends AppCompatActivity
         }.execute();
     };
 
-    public Long onSubjectItemCreatedWithID(final Subject newItem) {
-        new AsyncTask<Void, Void, Subject>() {
-
-            @Override
-            protected Subject doInBackground(Void... voids) {
-                newItem.id = database.SubjectDao().insert(newItem);
-                return newItem;
-            }
-
-            @Override
-            protected void onPostExecute(Subject subject) {
-                subjectAdapter.addItem(subject);
-            }
-        }.execute();
-        return newItem.id;
-    };
 
     private void loadItemsInBackground(){
         new AsyncTask<Void, Void, List<Subject>>() {
@@ -160,23 +147,97 @@ public class MainActivity extends AppCompatActivity
                 showDetailsIntent.setClass(MainActivity.this, ScannedBarcodeActivity.class);
                 startActivity(showDetailsIntent);
                 return true;
+            case R.id.action_deleteall:
+                deleteall();
             default:
                 return true;
         }
     }
 
-    public void importQRJsonData(){
+    public void importQRJsonDataasd(){
+        Subject newSubject;
+        subjectJsonObject jsonObject;
         try{
             String toParse = getIntent().getExtras().getString(ScannedBarcodeActivity.QR_DATA);
             if(!toParse.isEmpty()) {
                 Gson gson = new GsonBuilder().create();
-                subjectJsonObject jsonObject = gson.fromJson(toParse,subjectJsonObject.class);
-                Subject newSubject = jsonObject.getSubject();
-                newSubject.id = onSubjectItemCreatedWithID(newSubject);
-                System.out.print(newSubject.id);
+                jsonObject = gson.fromJson(toParse,subjectJsonObject.class);
+                newSubject = jsonObject.getSubject();
+                database.SubjectDao().insert(newSubject);
+                Long id = subjectAdapter.getall().get(subjectAdapter.getall().size()-1).id;
+                importEvents(jsonObject.events, id);
+
             }
 
-        }catch (Exception e){}
+        }catch (Exception e){
+        }
     }
+    private void importQRJsonData(){
+        new AsyncTask<Void, Void, Subject>() {
+
+            @Override
+            protected Subject doInBackground(Void... voids) {
+                Subject newSubject;
+                subjectJsonObject jsonObject;
+                try{
+                    String toParse = getIntent().getExtras().getString(ScannedBarcodeActivity.QR_DATA);
+                    if(!toParse.isEmpty()) {
+                        Gson gson = new GsonBuilder().create();
+                        jsonObject = gson.fromJson(toParse,subjectJsonObject.class);
+                        newSubject = jsonObject.getSubject();
+                        newSubject.id = database.SubjectDao().insert(newSubject);
+                        importEvents(jsonObject.events, newSubject.id);
+                        return newSubject;
+                    }
+
+                }catch (Exception e){
+                    return null;
+                }
+                return null;
+            }
 
+            protected void onPostExecute(Subject subject) {
+                if( subject != null)
+                    subjectAdapter.addItem(subject);}
+        }.execute();
+    }
+
+    public void importEvents(List<eventJsonObject> events,Long subjectId){
+        EventDatabase eventDatabase;
+
+        eventDatabase = Room.databaseBuilder(
+                getApplicationContext(),
+                EventDatabase.class,
+                "event-list"
+        ).build();
+
+
+        for ( eventJsonObject event: events) {
+            Event eventDataObject = event.getEventObject(subjectId);
+            eventDatabase.EventDao().insert(eventDataObject);
+        }
+    }
+
+    public void deleteall(){
+        subjectAdapter.empty();
+
+        new AsyncTask<Void, Void, Void>() {
+
+            @Override
+            protected Void doInBackground(Void... voids) {
+                database.SubjectDao().deleteAll();
+
+                EventDatabase eventDatabase;
+                eventDatabase = Room.databaseBuilder(
+                        getApplicationContext(),
+                        EventDatabase.class,
+                        "event-list"
+                ).build();
+                eventDatabase.EventDao().deleteAll();
+
+                return null;
+            }
+
+        }.execute();
+    }
 }
diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/SubjectActivity.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/SubjectActivity.java
index b410845892b82b9632138a1072f65a2b337860b4..c57360a6f7c09edf2e09a512d15bba1b054e2247 100644
--- a/app/src/main/java/com/ireallydontcare/viet/posseidon/SubjectActivity.java
+++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/SubjectActivity.java
@@ -87,6 +87,11 @@ public class SubjectActivity extends AppCompatActivity
                 "event-list"
         ).build();
 
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
         loadItemsInBackground();
     }
 
diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/adapter/EventAdapter.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/adapter/EventAdapter.java
index 327434b698a8885ae0ace7194a6c7b49f977cad6..d6e24e3451515b0dd8204178d40a97bc92ff2d0d 100644
--- a/app/src/main/java/com/ireallydontcare/viet/posseidon/adapter/EventAdapter.java
+++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/adapter/EventAdapter.java
@@ -69,7 +69,7 @@ public class EventAdapter extends RecyclerView.Adapter<EventAdapter.EventViewHol
     public void addItem(Event Event){
 
         events.add(Event);
-        notifyItemInserted(events.size() - 1);
+        notifyDataSetChanged();
     }
 
     public void update(List<Event> events){
diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/adapter/SubjectAdapter.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/adapter/SubjectAdapter.java
index 0c68732d36888e4b1d8abfd04e29138607c20179..f7b4553055407ee339348b962b20ba8615b0dbb6 100644
--- a/app/src/main/java/com/ireallydontcare/viet/posseidon/adapter/SubjectAdapter.java
+++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/adapter/SubjectAdapter.java
@@ -55,6 +55,11 @@ public class SubjectAdapter extends RecyclerView.Adapter<SubjectAdapter.SubjectV
         notifyDataSetChanged();
     }
 
+    public void empty(){
+        this.subjects.clear();
+        notifyDataSetChanged();
+    }
+
     @Override
     public int getItemCount() {
             return subjects.size();
@@ -88,4 +93,8 @@ public class SubjectAdapter extends RecyclerView.Adapter<SubjectAdapter.SubjectV
         notifyItemInserted(subjects.size() - 1);
     }
 
+    public List<Subject> getall(){
+        return subjects;
+    }
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/data/EventDao.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/data/EventDao.java
index 381f82041f393c9d2ec015039d373a6f02d09aa1..f373ad5d3e244ead7bf6a0b2352da93eb150b5fd 100644
--- a/app/src/main/java/com/ireallydontcare/viet/posseidon/data/EventDao.java
+++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/data/EventDao.java
@@ -27,4 +27,7 @@ public interface EventDao {
 
     @Delete
     void deleteItem(Event eventitem);
+
+    @Query("DELETE FROM eventitem")
+    void deleteAll();
 }
diff --git a/app/src/main/java/com/ireallydontcare/viet/posseidon/data/SubjectDao.java b/app/src/main/java/com/ireallydontcare/viet/posseidon/data/SubjectDao.java
index e3972d14c8044cb9d517decd2a45adb71b28923b..a5dbd3751e0198c92d8f4423671292f8b0bfa5c5 100644
--- a/app/src/main/java/com/ireallydontcare/viet/posseidon/data/SubjectDao.java
+++ b/app/src/main/java/com/ireallydontcare/viet/posseidon/data/SubjectDao.java
@@ -27,4 +27,7 @@ public interface SubjectDao {
 
     @Query("SELECT * FROM subjectitem where id = :id")
     Subject getSubjectById(Long id);
+
+    @Query("DELETE FROM subjectitem")
+    void deleteAll();
 }
diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml
index a20ab8c1351114697233ef21df77697ae3abaefa..39ddc1ec2e846304365ce23de093b9898e30e108 100644
--- a/app/src/main/res/menu/menu_main.xml
+++ b/app/src/main/res/menu/menu_main.xml
@@ -7,4 +7,9 @@
         android:orderInCategory="100"
         android:title="scanQR"
         app:showAsAction="never" />
+    <item
+        android:id="@+id/action_deleteall"
+        android:orderInCategory="100"
+        android:title="delete alll"
+        app:showAsAction="never" />
 </menu>
diff --git a/app/src/main/res/menu/menu_subject.xml b/app/src/main/res/menu/menu_subject.xml
index 3b3896cf314ee97e242b4d41b42b76946017caec..1fe8decfaf0bf54cb7f1e8573d497f0c4cd35622 100644
--- a/app/src/main/res/menu/menu_subject.xml
+++ b/app/src/main/res/menu/menu_subject.xml
@@ -2,11 +2,6 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     tools:context="com.ireallydontcare.viet.posseidon.MainActivity">
-    <item
-        android:id="@+id/deleteSubject"
-        android:orderInCategory="100"
-        android:title="Delete"
-        app:showAsAction="never" />
     <item
         android:id="@+id/genQR"
         android:orderInCategory="100"