From 54eaa7c55c95088af9514e1a1626ba22af9946eb Mon Sep 17 00:00:00 2001
From: Jo Grimstad <jo@literacyapp.org>
Date: Mon, 20 Feb 2017 13:21:00 +0300
Subject: [PATCH 1/3] #366 Added contentprovider module

---
 app/build.gradle                              |  4 +--
 .../java/org/literacyapp/dao/DaoMaster.java   |  4 +--
 contentprovider/.gitignore                    |  1 +
 contentprovider/build.gradle                  | 33 +++++++++++++++++++
 .../ExampleInstrumentedTest.java              | 26 +++++++++++++++
 contentprovider/src/main/AndroidManifest.xml  |  9 +++++
 .../LetterContentProvider.java                |  9 +++++
 .../src/main/res/values/strings.xml           |  3 ++
 .../contentprovider/ExampleUnitTest.java      | 17 ++++++++++
 settings.gradle                               |  2 +-
 10 files changed, 103 insertions(+), 5 deletions(-)
 create mode 100644 contentprovider/.gitignore
 create mode 100644 contentprovider/build.gradle
 create mode 100644 contentprovider/src/androidTest/java/org/literacyapp/contentprovider/ExampleInstrumentedTest.java
 create mode 100644 contentprovider/src/main/AndroidManifest.xml
 create mode 100644 contentprovider/src/main/java/org/literacyapp/contentprovider/LetterContentProvider.java
 create mode 100644 contentprovider/src/main/res/values/strings.xml
 create mode 100644 contentprovider/src/test/java/org/literacyapp/contentprovider/ExampleUnitTest.java

diff --git a/app/build.gradle b/app/build.gradle
index 31450d4..1801530 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,8 +9,8 @@ android {
         applicationId "org.literacyapp"
         minSdkVersion 21
         targetSdkVersion 23
-        versionCode 1004001
-        versionName "1.4.1"
+        versionCode 1004003
+        versionName "1.4.3-SNAPSHOT"
 
 //        jackOptions {
 //            enabled true
diff --git a/app/src/main/java/org/literacyapp/dao/DaoMaster.java b/app/src/main/java/org/literacyapp/dao/DaoMaster.java
index 234a46c..0af0589 100644
--- a/app/src/main/java/org/literacyapp/dao/DaoMaster.java
+++ b/app/src/main/java/org/literacyapp/dao/DaoMaster.java
@@ -14,10 +14,10 @@
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /**
- * Master of DAO (schema version 1004001): knows all DAOs.
+ * Master of DAO (schema version 1004003): knows all DAOs.
  */
 public class DaoMaster extends AbstractDaoMaster {
-    public static final int SCHEMA_VERSION = 1004001;
+    public static final int SCHEMA_VERSION = 1004003;
 
     /** Creates underlying database table using DAOs. */
     public static void createAllTables(Database db, boolean ifNotExists) {
diff --git a/contentprovider/.gitignore b/contentprovider/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/contentprovider/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/contentprovider/build.gradle b/contentprovider/build.gradle
new file mode 100644
index 0000000..6de3270
--- /dev/null
+++ b/contentprovider/build.gradle
@@ -0,0 +1,33 @@
+apply plugin: 'com.android.library'
+
+android {
+    compileSdkVersion 23
+    buildToolsVersion "23.0.1"
+
+    defaultConfig {
+        minSdkVersion 21
+        targetSdkVersion 23
+        versionCode 1004003
+        versionName "1.4.3"
+
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+
+    }
+
+    buildTypes {
+        release {
+            minifyEnabled false
+        }
+    }
+}
+
+dependencies {
+    compile fileTree(dir: 'libs', include: ['*.jar'])
+
+    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.1', {
+        exclude group: 'com.android.support', module: 'support-annotations'
+    })
+    testCompile 'junit:junit:4.12'
+
+    compile 'com.android.support:appcompat-v7:23.4.0'
+}
diff --git a/contentprovider/src/androidTest/java/org/literacyapp/contentprovider/ExampleInstrumentedTest.java b/contentprovider/src/androidTest/java/org/literacyapp/contentprovider/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..a0b0888
--- /dev/null
+++ b/contentprovider/src/androidTest/java/org/literacyapp/contentprovider/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+package org.literacyapp.contentprovider;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumentation test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+    @Test
+    public void useAppContext() throws Exception {
+        // Context of the app under test.
+        Context appContext = InstrumentationRegistry.getTargetContext();
+
+        assertEquals("org.literacyapp.contentprovider.test", appContext.getPackageName());
+    }
+}
diff --git a/contentprovider/src/main/AndroidManifest.xml b/contentprovider/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..7830aae
--- /dev/null
+++ b/contentprovider/src/main/AndroidManifest.xml
@@ -0,0 +1,9 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="org.literacyapp.contentprovider">
+
+    <application android:allowBackup="true" android:label="@string/app_name"
+        android:supportsRtl="true">
+
+    </application>
+
+</manifest>
diff --git a/contentprovider/src/main/java/org/literacyapp/contentprovider/LetterContentProvider.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/LetterContentProvider.java
new file mode 100644
index 0000000..802c0b9
--- /dev/null
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/LetterContentProvider.java
@@ -0,0 +1,9 @@
+package org.literacyapp.contentprovider;
+
+public class LetterContentProvider {
+
+    public static String getAvailableLetters() {
+        // TODO
+        return null;
+    }
+}
diff --git a/contentprovider/src/main/res/values/strings.xml b/contentprovider/src/main/res/values/strings.xml
new file mode 100644
index 0000000..9ad09da
--- /dev/null
+++ b/contentprovider/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+<resources>
+    <string name="app_name">Content Provider</string>
+</resources>
diff --git a/contentprovider/src/test/java/org/literacyapp/contentprovider/ExampleUnitTest.java b/contentprovider/src/test/java/org/literacyapp/contentprovider/ExampleUnitTest.java
new file mode 100644
index 0000000..e90b636
--- /dev/null
+++ b/contentprovider/src/test/java/org/literacyapp/contentprovider/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package org.literacyapp.contentprovider;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+    @Test
+    public void addition_isCorrect() throws Exception {
+        assertEquals(4, 2 + 2);
+    }
+}
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index c66ed30..0e106e8 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-include ':app', ':openCVLibrary310'
+include ':app', ':openCVLibrary310', ':contentprovider'

From 095394cfe69c79702454f462f392f7396945afd8 Mon Sep 17 00:00:00 2001
From: Jo Grimstad <jo@literacyapp.org>
Date: Wed, 22 Feb 2017 23:50:01 +0300
Subject: [PATCH 2/3] #366 Added content provider module

---
 app/build.gradle                              |  11 +-
 .../org/literacyapp/LiteracyApplication.java  |  22 +-
 .../java/org/literacyapp/MainActivity.java    |  18 +-
 .../AuthenticationActivity.java               |   9 +-
 .../StudentImageCollectionActivity.java       |  13 +-
 .../animaloverlay/AnimalOverlay.java          |   3 +-
 .../animaloverlay/AnimalOverlayHelper.java    |   1 +
 .../animaloverlay/AnimalOverlaysMap.java      |   1 +
 .../StudentAuthenticationActivity.java        |   6 +-
 .../fallback/StudentRegistrationActivity.java |   6 +-
 .../fallback/StudentSelectionActivity.java    |   4 +-
 .../helper/AuthenticationHelper.java          |  10 +-
 .../helper/DetectionHelper.java               |   1 +
 .../thread/AuthenticationThread.java          |  11 +-
 .../authentication/thread/MergeThread.java    |  11 +-
 .../thread/RecognitionThread.java             |  10 +-
 .../authentication/thread/TrainingThread.java |  27 +--
 .../content/letter/LettersActivity.java       |   8 +-
 .../multimedia/video/VideosActivity.java      |   8 +-
 .../content/number/NumbersActivity.java       |   8 +-
 .../content/task/LetterGraphemeActivity.java  |   8 +-
 .../content/task/NumberActivity.java          |   8 +-
 .../content/task/NumberGraphemeActivity.java  |   8 +-
 .../content/task/SelectLetterActivity.java    |  18 +-
 .../content/task/SelectNumberActivity.java    |  18 +-
 .../content/task/VideoActivity.java           |   4 +-
 .../content/task/VisemeActivity.java          |   8 +-
 .../literacyapp/logic/CurriculumHelper.java   |  10 +-
 .../literacyapp/receiver/BootReceiver.java    |   1 +
 .../FaceRecognitionTrainingJobService.java    |   5 +-
 .../AuthenticationJobService.java             |  21 +-
 .../DownloadContentAsyncTask.java             |  70 +++---
 .../MergeSimilarStudentsJobService.java       |   1 +
 .../java/org/literacyapp/util/AiHelper.java   |   4 -
 .../literacyapp/util/DeviceInfoHelper.java    |   6 +-
 .../literacyapp/util/MultimediaHelper.java    |  10 +-
 .../java/org/literacyapp/util/RootHelper.java |   4 -
 .../org/literacyapp/util/StudentHelper.java   |   2 +-
 .../literacyapp/util/StudentUpdateHelper.java |   6 +-
 contentprovider/build.gradle                  |  23 +-
 contentprovider/src/main/AndroidManifest.xml  |   4 +-
 .../contentprovider/ContentProvider.java      | 200 ++++++++++++++++++
 .../LetterContentProvider.java                |   9 -
 .../contentprovider}/dao/AllophoneDao.java    |  26 +--
 .../contentprovider}/dao/AudioDao.java        |  14 +-
 .../dao/AuthenticationEventDao.java           |  10 +-
 .../contentprovider}/dao/CustomDaoMaster.java |   2 +-
 .../contentprovider}/dao/DaoMaster.java       |   6 +-
 .../contentprovider}/dao/DaoSession.java      |  96 ++++-----
 .../dao/DbMigrationHelper.java                |   2 +-
 .../contentprovider}/dao/DeviceDao.java       |   6 +-
 .../dao/GsonToGreenDaoConverter.java          |  22 +-
 .../contentprovider}/dao/ImageDao.java        |  14 +-
 .../dao/JoinAudiosWithLettersDao.java         |   4 +-
 .../dao/JoinAudiosWithNumbersDao.java         |   4 +-
 .../dao/JoinAudiosWithWordsDao.java           |   4 +-
 .../dao/JoinImagesWithLettersDao.java         |   4 +-
 .../dao/JoinImagesWithNumbersDao.java         |   4 +-
 .../dao/JoinImagesWithWordsDao.java           |   4 +-
 .../dao/JoinStudentsWithDevicesDao.java       |   4 +-
 .../dao/JoinVideosWithLettersDao.java         |   4 +-
 .../dao/JoinVideosWithNumbersDao.java         |   4 +-
 .../dao/JoinVideosWithWordsDao.java           |   4 +-
 .../contentprovider}/dao/LetterDao.java       |  16 +-
 .../contentprovider}/dao/NumberDao.java       |  18 +-
 .../contentprovider}/dao/StudentDao.java      |   6 +-
 .../dao/StudentImageCollectionEventDao.java   |  10 +-
 .../contentprovider}/dao/StudentImageDao.java |  10 +-
 .../dao/StudentImageFeatureDao.java           |   6 +-
 .../contentprovider}/dao/VideoDao.java        |  14 +-
 .../contentprovider}/dao/WordDao.java         |  16 +-
 .../dao/converter/AudioFormatConverter.java   |   2 +-
 .../dao/converter/CalendarConverter.java      |   2 +-
 .../converter/ConsonantPlaceConverter.java    |   2 +-
 .../dao/converter/ConsonantTypeConverter.java |   2 +-
 .../converter/ConsonantVoicingConverter.java  |   2 +-
 .../dao/converter/ContentStatusConverter.java |   2 +-
 .../dao/converter/ImageFormatConverter.java   |   2 +-
 .../dao/converter/LipRoundingConverter.java   |   2 +-
 .../dao/converter/LocaleConverter.java        |   2 +-
 .../dao/converter/SoundTypeConverter.java     |   2 +-
 .../dao/converter/StringSetConverter.java     |   2 +-
 .../dao/converter/VideoFormatConverter.java   |   2 +-
 .../converter/VowelFrontnessConverter.java    |   2 +-
 .../dao/converter/VowelHeightConverter.java   |   2 +-
 .../dao/converter/VowelLengthConverter.java   |   2 +-
 .../contentprovider}/model/Device.java        |   4 +-
 .../model/JoinStudentsWithDevices.java        |   4 +-
 .../contentprovider}/model/Student.java       |  13 +-
 .../contentprovider}/model/StudentImage.java  |  14 +-
 .../model/StudentImageFeature.java            |   4 +-
 .../model/analytics/AuthenticationEvent.java  |  16 +-
 .../StudentImageCollectionEvent.java          |  34 +--
 .../model/content/Allophone.java              |  24 +--
 .../model/content/Letter.java                 |   8 +-
 .../model/content/Number.java                 |  14 +-
 .../contentprovider}/model/content/Word.java  |   8 +-
 .../model/content/multimedia/Audio.java       |  28 +--
 .../model/content/multimedia/Image.java       |  32 +--
 .../multimedia/JoinAudiosWithLetters.java     |   4 +-
 .../multimedia/JoinAudiosWithNumbers.java     |   4 +-
 .../multimedia/JoinAudiosWithWords.java       |   4 +-
 .../multimedia/JoinImagesWithLetters.java     |   4 +-
 .../multimedia/JoinImagesWithNumbers.java     |   4 +-
 .../multimedia/JoinImagesWithWords.java       |   4 +-
 .../multimedia/JoinVideosWithLetters.java     |   4 +-
 .../multimedia/JoinVideosWithNumbers.java     |   4 +-
 .../multimedia/JoinVideosWithWords.java       |   4 +-
 .../model/content/multimedia/Video.java       |  28 +--
 109 files changed, 721 insertions(+), 546 deletions(-)
 create mode 100644 contentprovider/src/main/java/org/literacyapp/contentprovider/ContentProvider.java
 delete mode 100644 contentprovider/src/main/java/org/literacyapp/contentprovider/LetterContentProvider.java
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/AllophoneDao.java (94%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/AudioDao.java (95%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/AuthenticationEventDao.java (96%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/CustomDaoMaster.java (99%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/DaoMaster.java (97%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/DaoSession.java (80%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/DbMigrationHelper.java (99%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/DeviceDao.java (96%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/GsonToGreenDaoConverter.java (92%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/ImageDao.java (95%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/JoinAudiosWithLettersDao.java (96%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/JoinAudiosWithNumbersDao.java (96%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/JoinAudiosWithWordsDao.java (96%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/JoinImagesWithLettersDao.java (96%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/JoinImagesWithNumbersDao.java (96%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/JoinImagesWithWordsDao.java (96%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/JoinStudentsWithDevicesDao.java (97%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/JoinVideosWithLettersDao.java (96%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/JoinVideosWithNumbersDao.java (96%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/JoinVideosWithWordsDao.java (96%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/LetterDao.java (93%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/NumberDao.java (95%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/StudentDao.java (96%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/StudentImageCollectionEventDao.java (96%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/StudentImageDao.java (97%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/StudentImageFeatureDao.java (96%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/VideoDao.java (95%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/WordDao.java (94%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/converter/AudioFormatConverter.java (94%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/converter/CalendarConverter.java (94%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/converter/ConsonantPlaceConverter.java (94%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/converter/ConsonantTypeConverter.java (94%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/converter/ConsonantVoicingConverter.java (94%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/converter/ContentStatusConverter.java (94%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/converter/ImageFormatConverter.java (94%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/converter/LipRoundingConverter.java (94%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/converter/LocaleConverter.java (93%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/converter/SoundTypeConverter.java (94%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/converter/StringSetConverter.java (95%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/converter/VideoFormatConverter.java (94%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/converter/VowelFrontnessConverter.java (94%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/converter/VowelHeightConverter.java (94%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/dao/converter/VowelLengthConverter.java (94%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/Device.java (95%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/JoinStudentsWithDevices.java (95%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/Student.java (92%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/StudentImage.java (94%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/StudentImageFeature.java (92%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/analytics/AuthenticationEvent.java (93%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/analytics/StudentImageCollectionEvent.java (92%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/content/Allophone.java (88%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/content/Letter.java (90%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/content/Number.java (92%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/content/Word.java (91%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/content/multimedia/Audio.java (91%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/content/multimedia/Image.java (91%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/content/multimedia/JoinAudiosWithLetters.java (93%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/content/multimedia/JoinAudiosWithNumbers.java (93%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/content/multimedia/JoinAudiosWithWords.java (93%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/content/multimedia/JoinImagesWithLetters.java (93%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/content/multimedia/JoinImagesWithNumbers.java (93%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/content/multimedia/JoinImagesWithWords.java (93%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/content/multimedia/JoinVideosWithLetters.java (93%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/content/multimedia/JoinVideosWithNumbers.java (93%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/content/multimedia/JoinVideosWithWords.java (93%)
 rename {app/src/main/java/org/literacyapp => contentprovider/src/main/java/org/literacyapp/contentprovider}/model/content/multimedia/Video.java (91%)

diff --git a/app/build.gradle b/app/build.gradle
index 1801530..d76f866 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,8 +9,8 @@ android {
         applicationId "org.literacyapp"
         minSdkVersion 21
         targetSdkVersion 23
-        versionCode 1004003
-        versionName "1.4.3-SNAPSHOT"
+        versionCode 1005002
+        versionName "1.5.2"
 
 //        jackOptions {
 //            enabled true
@@ -56,8 +56,8 @@ android {
 
 greendao {
     schemaVersion android.defaultConfig.versionCode
-    daoPackage 'org.literacyapp.dao'
-    targetGenDir '../app/src/main/java'
+    daoPackage 'org.literacyapp.contentprovider.dao'
+    targetGenDir '../contentprovider/src/main/java'
 }
 
 buildscript {
@@ -77,8 +77,9 @@ dependencies {
     androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
     androidTestCompile 'com.android.support:support-annotations:23.4.0'
 
-    compile 'org.literacyapp:literacyapp-model:1.1.33'
+    compile project(':contentprovider')
     compile 'org.greenrobot:greendao:3.2.0'
+
     compile 'com.android.support:appcompat-v7:23.4.0'
     compile 'com.android.support:cardview-v7:23.4.0'
     compile 'com.android.support:design:23.4.0'
diff --git a/app/src/main/java/org/literacyapp/LiteracyApplication.java b/app/src/main/java/org/literacyapp/LiteracyApplication.java
index 8c7d143..e69d471 100644
--- a/app/src/main/java/org/literacyapp/LiteracyApplication.java
+++ b/app/src/main/java/org/literacyapp/LiteracyApplication.java
@@ -3,15 +3,17 @@
 import android.app.Application;
 import android.content.SharedPreferences;
 import android.database.sqlite.SQLiteDatabase;
+import android.os.Environment;
 import android.preference.PreferenceManager;
 import android.speech.tts.TextToSpeech;
 import android.util.Log;
 
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.dao.CustomDaoMaster;
+import org.literacyapp.contentprovider.dao.CustomDaoMaster;
+import org.literacyapp.contentprovider.dao.DaoSession;
 import org.literacyapp.util.VersionHelper;
 
 public class LiteracyApplication extends Application {
+
     public static final int FACE_RECOGNITION_TRAINING_JOB_ID = 0;
     public static final int CONTENT_SYNCRHONIZATION_JOB_ID = 1;
     public static final int AUTHENTICATION_JOB_ID = 2;
@@ -28,12 +30,6 @@ public void onCreate() {
         Log.i(getClass().getName(), "onCreate");
         super.onCreate();
 
-        // Initialize greenDAO database
-        CustomDaoMaster.DevOpenHelper openHelper = new CustomDaoMaster.DevOpenHelper(getApplicationContext(), "literacyapp-db", null);
-        SQLiteDatabase db = openHelper.getWritableDatabase();
-        CustomDaoMaster daoMaster = new CustomDaoMaster(db);
-        daoSession = daoMaster.newSession();
-
         // Check if the application's versionCode was upgraded
         SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
         int oldVersionCode = sharedPreferences.getInt(PREF_APP_VERSION_CODE, 0);
@@ -61,10 +57,18 @@ public void onInit(int status) {
     }
 
     public DaoSession getDaoSession() {
+        if (daoSession == null) {
+            // Initialize greenDAO database
+            String dbName = Environment.getExternalStorageDirectory() + "/.literacyapp/database/literacyapp-db";
+            CustomDaoMaster.DevOpenHelper openHelper = new CustomDaoMaster.DevOpenHelper(getApplicationContext(), dbName, null);
+            SQLiteDatabase db = openHelper.getWritableDatabase();
+            CustomDaoMaster daoMaster = new CustomDaoMaster(db);
+            daoSession = daoMaster.newSession();
+        }
+
         return daoSession;
     }
 
-
     public TextToSpeech getTts() {
         return tts;
     }
diff --git a/app/src/main/java/org/literacyapp/MainActivity.java b/app/src/main/java/org/literacyapp/MainActivity.java
index 0df5922..7c02d3a 100644
--- a/app/src/main/java/org/literacyapp/MainActivity.java
+++ b/app/src/main/java/org/literacyapp/MainActivity.java
@@ -8,21 +8,15 @@
 import android.support.v4.app.ActivityCompat;
 import android.support.v4.content.ContextCompat;
 import android.support.v7.app.AppCompatActivity;
-import android.text.TextUtils;
 import android.util.Log;
 import android.widget.Toast;
 
-import org.literacyapp.authentication.helper.DetectionHelper;
-import org.literacyapp.dao.LetterDao;
+import org.literacyapp.contentprovider.dao.LetterDao;
 import org.literacyapp.service.synchronization.ReadDeviceAsyncTask;
 import org.literacyapp.util.ConnectivityHelper;
 import org.literacyapp.util.RootHelper;
 
-import java.io.BufferedReader;
-import java.io.DataOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
 
 public class MainActivity extends AppCompatActivity {
 
@@ -37,9 +31,6 @@ protected void onCreate(Bundle savedInstanceState) {
 
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
-
-        LiteracyApplication literacyApplication = (LiteracyApplication) getApplication();
-        letterDao = literacyApplication.getDaoSession().getLetterDao();
     }
 
     @Override
@@ -66,6 +57,13 @@ protected void onStart() {
             Log.e(getClass().getName(), null, e);
         }
 
+        LiteracyApplication literacyApplication = (LiteracyApplication) getApplication();
+        letterDao = literacyApplication.getDaoSession().getLetterDao();
+
+//        ContentProvider.initializeDb(this);
+//        List<Letter> letters = ContentProvider.getAvailableLetters();
+//        Log.i(getClass().getName(), "letters: " + letters);
+
         if (letterDao.loadAll().isEmpty()) {
             // Download content
             boolean isWifiEnabled = ConnectivityHelper.isWifiEnabled(getApplicationContext());
diff --git a/app/src/main/java/org/literacyapp/authentication/AuthenticationActivity.java b/app/src/main/java/org/literacyapp/authentication/AuthenticationActivity.java
index a60b651..c34d007 100644
--- a/app/src/main/java/org/literacyapp/authentication/AuthenticationActivity.java
+++ b/app/src/main/java/org/literacyapp/authentication/AuthenticationActivity.java
@@ -17,10 +17,10 @@
 import org.literacyapp.authentication.helper.DetectionHelper;
 import org.literacyapp.authentication.thread.RecognitionThread;
 import org.literacyapp.authentication.thread.TrainingThread;
-import org.literacyapp.dao.AuthenticationEventDao;
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.dao.StudentImageCollectionEventDao;
-import org.literacyapp.model.Student;
+import org.literacyapp.contentprovider.dao.AuthenticationEventDao;
+import org.literacyapp.contentprovider.dao.DaoSession;
+import org.literacyapp.contentprovider.dao.StudentImageCollectionEventDao;
+import org.literacyapp.contentprovider.model.Student;
 import org.literacyapp.util.EnvironmentSettings;
 import org.literacyapp.util.MultimediaHelper;
 import org.opencv.android.CameraBridgeViewBase;
@@ -39,6 +39,7 @@
 import pl.droidsonroids.gif.GifImageView;
 
 public class AuthenticationActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2 {
+
     public static final long AUTHENTICATION_ANIMATION_TIME = 5000;
     public static final String AUTHENTICATION_ANIMATION_ALREADY_PLAYED_IDENTIFIER = "AuthenticationAnimationAlreadyPlayed";
     public static final String ANIMAL_OVERLAY_IDENTIFIER = "AnimalOverlayName";
diff --git a/app/src/main/java/org/literacyapp/authentication/StudentImageCollectionActivity.java b/app/src/main/java/org/literacyapp/authentication/StudentImageCollectionActivity.java
index 78617b8..ca36f35 100644
--- a/app/src/main/java/org/literacyapp/authentication/StudentImageCollectionActivity.java
+++ b/app/src/main/java/org/literacyapp/authentication/StudentImageCollectionActivity.java
@@ -13,12 +13,12 @@
 import org.literacyapp.authentication.animaloverlay.AnimalOverlay;
 import org.literacyapp.authentication.animaloverlay.AnimalOverlayHelper;
 import org.literacyapp.authentication.helper.DetectionHelper;
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.dao.StudentImageCollectionEventDao;
-import org.literacyapp.dao.StudentImageDao;
-import org.literacyapp.model.Device;
-import org.literacyapp.model.StudentImage;
-import org.literacyapp.model.analytics.StudentImageCollectionEvent;
+import org.literacyapp.contentprovider.dao.DaoSession;
+import org.literacyapp.contentprovider.dao.StudentImageCollectionEventDao;
+import org.literacyapp.contentprovider.dao.StudentImageDao;
+import org.literacyapp.contentprovider.model.Device;
+import org.literacyapp.contentprovider.model.StudentImage;
+import org.literacyapp.contentprovider.model.analytics.StudentImageCollectionEvent;
 import org.literacyapp.receiver.BootReceiver;
 import org.literacyapp.util.DeviceInfoHelper;
 import org.literacyapp.util.EnvironmentSettings;
@@ -48,6 +48,7 @@
  */
 
 public class StudentImageCollectionActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2 {
+
     private JavaCameraView preview;
     private PreProcessorFactory ppF;
     private long lastTime;
diff --git a/app/src/main/java/org/literacyapp/authentication/animaloverlay/AnimalOverlay.java b/app/src/main/java/org/literacyapp/authentication/animaloverlay/AnimalOverlay.java
index a033304..267cebb 100644
--- a/app/src/main/java/org/literacyapp/authentication/animaloverlay/AnimalOverlay.java
+++ b/app/src/main/java/org/literacyapp/authentication/animaloverlay/AnimalOverlay.java
@@ -1,12 +1,11 @@
 package org.literacyapp.authentication.animaloverlay;
 
-import java.io.File;
-
 /**
  * Created by sladomic on 27.12.16.
  */
 
 public class AnimalOverlay {
+
     private String name;
     private int frameStartX;
     private int frameStartY;
diff --git a/app/src/main/java/org/literacyapp/authentication/animaloverlay/AnimalOverlayHelper.java b/app/src/main/java/org/literacyapp/authentication/animaloverlay/AnimalOverlayHelper.java
index 9a44766..ca034f2 100644
--- a/app/src/main/java/org/literacyapp/authentication/animaloverlay/AnimalOverlayHelper.java
+++ b/app/src/main/java/org/literacyapp/authentication/animaloverlay/AnimalOverlayHelper.java
@@ -18,6 +18,7 @@
  */
 
 public class AnimalOverlayHelper {
+
     private static final String ANIMAL_OVERLAYS_CONFIG_JSON = "AnimalOverlaysConfig.json";
     private Context context;
 
diff --git a/app/src/main/java/org/literacyapp/authentication/animaloverlay/AnimalOverlaysMap.java b/app/src/main/java/org/literacyapp/authentication/animaloverlay/AnimalOverlaysMap.java
index 2f8723c..feb2fdb 100644
--- a/app/src/main/java/org/literacyapp/authentication/animaloverlay/AnimalOverlaysMap.java
+++ b/app/src/main/java/org/literacyapp/authentication/animaloverlay/AnimalOverlaysMap.java
@@ -7,6 +7,7 @@
  */
 
 public class AnimalOverlaysMap {
+
     private Map<String, AnimalOverlay> animalOverlays;
 
     public Map<String, AnimalOverlay> getAnimalOverlays() {
diff --git a/app/src/main/java/org/literacyapp/authentication/fallback/StudentAuthenticationActivity.java b/app/src/main/java/org/literacyapp/authentication/fallback/StudentAuthenticationActivity.java
index 6d461b2..1a160aa 100644
--- a/app/src/main/java/org/literacyapp/authentication/fallback/StudentAuthenticationActivity.java
+++ b/app/src/main/java/org/literacyapp/authentication/fallback/StudentAuthenticationActivity.java
@@ -7,9 +7,9 @@
 
 import org.literacyapp.LiteracyApplication;
 import org.literacyapp.R;
-import org.literacyapp.dao.StudentDao;
-import org.literacyapp.dao.StudentImageDao;
-import org.literacyapp.model.Student;
+import org.literacyapp.contentprovider.dao.StudentDao;
+import org.literacyapp.contentprovider.dao.StudentImageDao;
+import org.literacyapp.contentprovider.model.Student;
 import org.literacyapp.util.StudentHelper;
 
 import java.io.File;
diff --git a/app/src/main/java/org/literacyapp/authentication/fallback/StudentRegistrationActivity.java b/app/src/main/java/org/literacyapp/authentication/fallback/StudentRegistrationActivity.java
index 876fe3e..f86610a 100644
--- a/app/src/main/java/org/literacyapp/authentication/fallback/StudentRegistrationActivity.java
+++ b/app/src/main/java/org/literacyapp/authentication/fallback/StudentRegistrationActivity.java
@@ -21,9 +21,9 @@
 
 import org.literacyapp.LiteracyApplication;
 import org.literacyapp.R;
-import org.literacyapp.dao.StudentDao;
-import org.literacyapp.dao.StudentImageDao;
-import org.literacyapp.model.Student;
+import org.literacyapp.contentprovider.dao.StudentDao;
+import org.literacyapp.contentprovider.dao.StudentImageDao;
+import org.literacyapp.contentprovider.model.Student;
 import org.literacyapp.receiver.ScreenOnReceiver;
 import org.literacyapp.util.MediaPlayerHelper;
 import org.literacyapp.util.StudentHelper;
diff --git a/app/src/main/java/org/literacyapp/authentication/fallback/StudentSelectionActivity.java b/app/src/main/java/org/literacyapp/authentication/fallback/StudentSelectionActivity.java
index e18fc5b..ae0cdea 100644
--- a/app/src/main/java/org/literacyapp/authentication/fallback/StudentSelectionActivity.java
+++ b/app/src/main/java/org/literacyapp/authentication/fallback/StudentSelectionActivity.java
@@ -19,8 +19,8 @@
 import org.literacyapp.LiteracyApplication;
 import org.literacyapp.R;
 import org.literacyapp.authentication.helper.AuthenticationHelper;
-import org.literacyapp.dao.StudentDao;
-import org.literacyapp.model.Student;
+import org.literacyapp.contentprovider.dao.StudentDao;
+import org.literacyapp.contentprovider.model.Student;
 import org.literacyapp.receiver.ScreenOnReceiver;
 import org.literacyapp.util.MediaPlayerHelper;
 
diff --git a/app/src/main/java/org/literacyapp/authentication/helper/AuthenticationHelper.java b/app/src/main/java/org/literacyapp/authentication/helper/AuthenticationHelper.java
index c9ad377..8eb1939 100644
--- a/app/src/main/java/org/literacyapp/authentication/helper/AuthenticationHelper.java
+++ b/app/src/main/java/org/literacyapp/authentication/helper/AuthenticationHelper.java
@@ -5,11 +5,11 @@
 
 import org.apache.commons.math3.analysis.function.StepFunction;
 import org.literacyapp.LiteracyApplication;
-import org.literacyapp.dao.AuthenticationEventDao;
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.model.Device;
-import org.literacyapp.model.Student;
-import org.literacyapp.model.analytics.AuthenticationEvent;
+import org.literacyapp.contentprovider.dao.AuthenticationEventDao;
+import org.literacyapp.contentprovider.dao.DaoSession;
+import org.literacyapp.contentprovider.model.Device;
+import org.literacyapp.contentprovider.model.Student;
+import org.literacyapp.contentprovider.model.analytics.AuthenticationEvent;
 import org.literacyapp.receiver.BootReceiver;
 import org.literacyapp.util.DeviceInfoHelper;
 import org.literacyapp.util.StudentUpdateHelper;
diff --git a/app/src/main/java/org/literacyapp/authentication/helper/DetectionHelper.java b/app/src/main/java/org/literacyapp/authentication/helper/DetectionHelper.java
index fe9dc2f..412c199 100644
--- a/app/src/main/java/org/literacyapp/authentication/helper/DetectionHelper.java
+++ b/app/src/main/java/org/literacyapp/authentication/helper/DetectionHelper.java
@@ -26,6 +26,7 @@
  */
 
 public class DetectionHelper {
+
     private static final Scalar RED_COLOR = new Scalar(255, 0, 0, 255);
     private static final int MAX_TIME_BEFORE_FALLBACK = 15000;
     private static final int SCREEN_BRIGHTNESS_INCREASE_RATE = 20;
diff --git a/app/src/main/java/org/literacyapp/authentication/thread/AuthenticationThread.java b/app/src/main/java/org/literacyapp/authentication/thread/AuthenticationThread.java
index eeec3bc..c4cb675 100644
--- a/app/src/main/java/org/literacyapp/authentication/thread/AuthenticationThread.java
+++ b/app/src/main/java/org/literacyapp/authentication/thread/AuthenticationThread.java
@@ -8,11 +8,11 @@
 
 import org.literacyapp.LiteracyApplication;
 import org.literacyapp.authentication.AuthenticationActivity;
-import org.literacyapp.dao.AuthenticationEventDao;
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.dao.StudentImageCollectionEventDao;
-import org.literacyapp.model.analytics.AuthenticationEvent;
-import org.literacyapp.model.analytics.StudentImageCollectionEvent;
+import org.literacyapp.contentprovider.dao.AuthenticationEventDao;
+import org.literacyapp.contentprovider.dao.DaoSession;
+import org.literacyapp.contentprovider.dao.StudentImageCollectionEventDao;
+import org.literacyapp.contentprovider.model.analytics.AuthenticationEvent;
+import org.literacyapp.contentprovider.model.analytics.StudentImageCollectionEvent;
 import org.literacyapp.receiver.BootReceiver;
 import org.literacyapp.service.synchronization.AuthenticationJobService;
 
@@ -24,6 +24,7 @@
  */
 
 public class AuthenticationThread extends Thread {
+
     private Context context;
     private AuthenticationJobService authenticationJobService;
 
diff --git a/app/src/main/java/org/literacyapp/authentication/thread/MergeThread.java b/app/src/main/java/org/literacyapp/authentication/thread/MergeThread.java
index 4e9af13..0a9c6cd 100644
--- a/app/src/main/java/org/literacyapp/authentication/thread/MergeThread.java
+++ b/app/src/main/java/org/literacyapp/authentication/thread/MergeThread.java
@@ -7,11 +7,11 @@
 import com.google.gson.reflect.TypeToken;
 
 import org.literacyapp.LiteracyApplication;
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.dao.StudentDao;
-import org.literacyapp.dao.StudentImageCollectionEventDao;
-import org.literacyapp.model.Student;
-import org.literacyapp.model.analytics.StudentImageCollectionEvent;
+import org.literacyapp.contentprovider.dao.DaoSession;
+import org.literacyapp.contentprovider.dao.StudentDao;
+import org.literacyapp.contentprovider.dao.StudentImageCollectionEventDao;
+import org.literacyapp.contentprovider.model.Student;
+import org.literacyapp.contentprovider.model.analytics.StudentImageCollectionEvent;
 import org.literacyapp.service.synchronization.MergeSimilarStudentsJobService;
 import org.opencv.core.Mat;
 import org.opencv.core.Rect;
@@ -28,6 +28,7 @@
  */
 
 public class MergeThread extends Thread {
+
     private PreProcessorFactory ppF;
     private TrainingThread trainingThread;
     private StudentDao studentDao;
diff --git a/app/src/main/java/org/literacyapp/authentication/thread/RecognitionThread.java b/app/src/main/java/org/literacyapp/authentication/thread/RecognitionThread.java
index 22c49d4..f7a9a8e 100644
--- a/app/src/main/java/org/literacyapp/authentication/thread/RecognitionThread.java
+++ b/app/src/main/java/org/literacyapp/authentication/thread/RecognitionThread.java
@@ -5,12 +5,9 @@
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 
-import org.greenrobot.greendao.query.WhereCondition;
-import org.literacyapp.dao.StudentDao;
-import org.literacyapp.dao.StudentImageCollectionEventDao;
-import org.literacyapp.model.Student;
-import org.literacyapp.model.StudentImage;
-import org.literacyapp.model.analytics.StudentImageCollectionEvent;
+import org.literacyapp.contentprovider.dao.StudentImageCollectionEventDao;
+import org.literacyapp.contentprovider.model.Student;
+import org.literacyapp.contentprovider.model.analytics.StudentImageCollectionEvent;
 import org.opencv.core.Core;
 import org.opencv.core.Mat;
 import org.opencv.utils.Converters;
@@ -25,6 +22,7 @@
  */
 
 public class RecognitionThread extends Thread {
+
     private static final double SIMILARITY_THRESHOLD = 0.5;
     private TensorFlow tensorFlow;
     private StudentImageCollectionEventDao studentImageCollectionEventDao;
diff --git a/app/src/main/java/org/literacyapp/authentication/thread/TrainingThread.java b/app/src/main/java/org/literacyapp/authentication/thread/TrainingThread.java
index 654791d..5f2578c 100644
--- a/app/src/main/java/org/literacyapp/authentication/thread/TrainingThread.java
+++ b/app/src/main/java/org/literacyapp/authentication/thread/TrainingThread.java
@@ -3,22 +3,20 @@
 import android.content.Context;
 import android.text.TextUtils;
 import android.util.Log;
-import android.widget.Toast;
 
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 
-import org.greenrobot.greendao.query.Join;
 import org.literacyapp.LiteracyApplication;
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.dao.StudentDao;
-import org.literacyapp.dao.StudentImageCollectionEventDao;
-import org.literacyapp.dao.StudentImageDao;
-import org.literacyapp.dao.StudentImageFeatureDao;
-import org.literacyapp.model.Student;
-import org.literacyapp.model.StudentImage;
-import org.literacyapp.model.StudentImageFeature;
-import org.literacyapp.model.analytics.StudentImageCollectionEvent;
+import org.literacyapp.contentprovider.dao.DaoSession;
+import org.literacyapp.contentprovider.dao.StudentDao;
+import org.literacyapp.contentprovider.dao.StudentImageCollectionEventDao;
+import org.literacyapp.contentprovider.dao.StudentImageDao;
+import org.literacyapp.contentprovider.dao.StudentImageFeatureDao;
+import org.literacyapp.contentprovider.model.Student;
+import org.literacyapp.contentprovider.model.StudentImage;
+import org.literacyapp.contentprovider.model.StudentImageFeature;
+import org.literacyapp.contentprovider.model.analytics.StudentImageCollectionEvent;
 import org.literacyapp.service.FaceRecognitionTrainingJobService;
 import org.literacyapp.util.AiHelper;
 import org.literacyapp.util.MultimediaHelper;
@@ -26,7 +24,6 @@
 import org.opencv.android.OpenCVLoader;
 import org.opencv.core.Core;
 import org.opencv.core.Mat;
-import org.opencv.core.Rect;
 import org.opencv.imgcodecs.Imgcodecs;
 import org.opencv.utils.Converters;
 
@@ -42,14 +39,10 @@
 import java.util.Calendar;
 import java.util.List;
 
-import ch.zhaw.facerecognitionlibrary.PreProcessor.PreProcessorFactory;
 import ch.zhaw.facerecognitionlibrary.Recognition.TensorFlow;
 
-/**
- * Created by sladomic on 26.11.16.
- */
-
 public class TrainingThread extends Thread {
+
     private static final String MODEL_DOWNLOAD_LINK = "https://drive.google.com/open?id=0B3jQsJcchixPek9lU3BaOHpCUGc";
     private Context context;
     private DaoSession daoSession;
diff --git a/app/src/main/java/org/literacyapp/content/letter/LettersActivity.java b/app/src/main/java/org/literacyapp/content/letter/LettersActivity.java
index 828bd78..13e3499 100644
--- a/app/src/main/java/org/literacyapp/content/letter/LettersActivity.java
+++ b/app/src/main/java/org/literacyapp/content/letter/LettersActivity.java
@@ -16,11 +16,11 @@
 import org.literacyapp.LiteracyApplication;
 import org.literacyapp.R;
 import org.literacyapp.content.task.VisemeActivity;
-import org.literacyapp.dao.AudioDao;
-import org.literacyapp.dao.LetterDao;
+import org.literacyapp.contentprovider.dao.AudioDao;
+import org.literacyapp.contentprovider.dao.LetterDao;
+import org.literacyapp.contentprovider.model.content.Letter;
+import org.literacyapp.contentprovider.model.content.multimedia.Audio;
 import org.literacyapp.logic.CurriculumHelper;
-import org.literacyapp.model.content.Letter;
-import org.literacyapp.model.content.multimedia.Audio;
 import org.literacyapp.util.MediaPlayerHelper;
 import org.literacyapp.util.MultimediaHelper;
 import org.literacyapp.util.TtsHelper;
diff --git a/app/src/main/java/org/literacyapp/content/multimedia/video/VideosActivity.java b/app/src/main/java/org/literacyapp/content/multimedia/video/VideosActivity.java
index 6e4b984..4c8f130 100644
--- a/app/src/main/java/org/literacyapp/content/multimedia/video/VideosActivity.java
+++ b/app/src/main/java/org/literacyapp/content/multimedia/video/VideosActivity.java
@@ -15,11 +15,11 @@
 import org.literacyapp.LiteracyApplication;
 import org.literacyapp.R;
 import org.literacyapp.content.task.VideoActivity;
-import org.literacyapp.dao.VideoDao;
+import org.literacyapp.contentprovider.dao.VideoDao;
+import org.literacyapp.contentprovider.model.content.Letter;
+import org.literacyapp.contentprovider.model.content.Number;
+import org.literacyapp.contentprovider.model.content.multimedia.Video;
 import org.literacyapp.logic.CurriculumHelper;
-import org.literacyapp.model.content.Letter;
-import org.literacyapp.model.content.Number;
-import org.literacyapp.model.content.multimedia.Video;
 import org.literacyapp.util.MultimediaHelper;
 
 import java.io.File;
diff --git a/app/src/main/java/org/literacyapp/content/number/NumbersActivity.java b/app/src/main/java/org/literacyapp/content/number/NumbersActivity.java
index 73147ba..09086e2 100644
--- a/app/src/main/java/org/literacyapp/content/number/NumbersActivity.java
+++ b/app/src/main/java/org/literacyapp/content/number/NumbersActivity.java
@@ -17,11 +17,11 @@
 import org.literacyapp.LiteracyApplication;
 import org.literacyapp.R;
 import org.literacyapp.content.task.NumberActivity;
-import org.literacyapp.dao.AudioDao;
-import org.literacyapp.dao.NumberDao;
+import org.literacyapp.contentprovider.dao.AudioDao;
+import org.literacyapp.contentprovider.dao.NumberDao;
+import org.literacyapp.contentprovider.model.content.Number;
+import org.literacyapp.contentprovider.model.content.multimedia.Audio;
 import org.literacyapp.logic.CurriculumHelper;
-import org.literacyapp.model.content.Number;
-import org.literacyapp.model.content.multimedia.Audio;
 import org.literacyapp.util.MediaPlayerHelper;
 import org.literacyapp.util.MultimediaHelper;
 import org.literacyapp.util.TtsHelper;
diff --git a/app/src/main/java/org/literacyapp/content/task/LetterGraphemeActivity.java b/app/src/main/java/org/literacyapp/content/task/LetterGraphemeActivity.java
index 870c7dd..416d8bd 100644
--- a/app/src/main/java/org/literacyapp/content/task/LetterGraphemeActivity.java
+++ b/app/src/main/java/org/literacyapp/content/task/LetterGraphemeActivity.java
@@ -15,10 +15,10 @@
 
 import org.literacyapp.LiteracyApplication;
 import org.literacyapp.R;
-import org.literacyapp.dao.AudioDao;
-import org.literacyapp.dao.LetterDao;
-import org.literacyapp.model.content.Letter;
-import org.literacyapp.model.content.multimedia.Audio;
+import org.literacyapp.contentprovider.dao.AudioDao;
+import org.literacyapp.contentprovider.dao.LetterDao;
+import org.literacyapp.contentprovider.model.content.Letter;
+import org.literacyapp.contentprovider.model.content.multimedia.Audio;
 import org.literacyapp.util.MediaPlayerHelper;
 import org.literacyapp.util.MultimediaHelper;
 import org.literacyapp.util.TtsHelper;
diff --git a/app/src/main/java/org/literacyapp/content/task/NumberActivity.java b/app/src/main/java/org/literacyapp/content/task/NumberActivity.java
index c8c3b14..160f16c 100644
--- a/app/src/main/java/org/literacyapp/content/task/NumberActivity.java
+++ b/app/src/main/java/org/literacyapp/content/task/NumberActivity.java
@@ -14,10 +14,10 @@
 
 import org.literacyapp.LiteracyApplication;
 import org.literacyapp.R;
-import org.literacyapp.dao.AudioDao;
-import org.literacyapp.dao.NumberDao;
-import org.literacyapp.model.content.Number;
-import org.literacyapp.model.content.multimedia.Audio;
+import org.literacyapp.contentprovider.dao.AudioDao;
+import org.literacyapp.contentprovider.dao.NumberDao;
+import org.literacyapp.contentprovider.model.content.Number;
+import org.literacyapp.contentprovider.model.content.multimedia.Audio;
 import org.literacyapp.util.MediaPlayerHelper;
 import org.literacyapp.util.MultimediaHelper;
 import org.literacyapp.util.TtsHelper;
diff --git a/app/src/main/java/org/literacyapp/content/task/NumberGraphemeActivity.java b/app/src/main/java/org/literacyapp/content/task/NumberGraphemeActivity.java
index 9f195e2..2f8f198 100644
--- a/app/src/main/java/org/literacyapp/content/task/NumberGraphemeActivity.java
+++ b/app/src/main/java/org/literacyapp/content/task/NumberGraphemeActivity.java
@@ -15,10 +15,10 @@
 
 import org.literacyapp.LiteracyApplication;
 import org.literacyapp.R;
-import org.literacyapp.dao.AudioDao;
-import org.literacyapp.dao.NumberDao;
-import org.literacyapp.model.content.Number;
-import org.literacyapp.model.content.multimedia.Audio;
+import org.literacyapp.contentprovider.dao.AudioDao;
+import org.literacyapp.contentprovider.dao.NumberDao;
+import org.literacyapp.contentprovider.model.content.Number;
+import org.literacyapp.contentprovider.model.content.multimedia.Audio;
 import org.literacyapp.util.MediaPlayerHelper;
 import org.literacyapp.util.MultimediaHelper;
 import org.literacyapp.util.TtsHelper;
diff --git a/app/src/main/java/org/literacyapp/content/task/SelectLetterActivity.java b/app/src/main/java/org/literacyapp/content/task/SelectLetterActivity.java
index 76dda0d..6ea4ad7 100644
--- a/app/src/main/java/org/literacyapp/content/task/SelectLetterActivity.java
+++ b/app/src/main/java/org/literacyapp/content/task/SelectLetterActivity.java
@@ -16,16 +16,16 @@
 
 import org.literacyapp.LiteracyApplication;
 import org.literacyapp.R;
-import org.literacyapp.dao.AudioDao;
-import org.literacyapp.dao.JoinVideosWithLettersDao;
-import org.literacyapp.dao.LetterDao;
-import org.literacyapp.dao.VideoDao;
+import org.literacyapp.contentprovider.dao.AudioDao;
+import org.literacyapp.contentprovider.dao.JoinVideosWithLettersDao;
+import org.literacyapp.contentprovider.dao.LetterDao;
+import org.literacyapp.contentprovider.dao.VideoDao;
+import org.literacyapp.contentprovider.model.Student;
+import org.literacyapp.contentprovider.model.content.Letter;
+import org.literacyapp.contentprovider.model.content.multimedia.Audio;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinVideosWithLetters;
+import org.literacyapp.contentprovider.model.content.multimedia.Video;
 import org.literacyapp.logic.CurriculumHelper;
-import org.literacyapp.model.Student;
-import org.literacyapp.model.content.Letter;
-import org.literacyapp.model.content.multimedia.Audio;
-import org.literacyapp.model.content.multimedia.JoinVideosWithLetters;
-import org.literacyapp.model.content.multimedia.Video;
 import org.literacyapp.util.MediaPlayerHelper;
 import org.literacyapp.util.MultimediaHelper;
 import org.literacyapp.util.TtsHelper;
diff --git a/app/src/main/java/org/literacyapp/content/task/SelectNumberActivity.java b/app/src/main/java/org/literacyapp/content/task/SelectNumberActivity.java
index 3c77897..308a76f 100644
--- a/app/src/main/java/org/literacyapp/content/task/SelectNumberActivity.java
+++ b/app/src/main/java/org/literacyapp/content/task/SelectNumberActivity.java
@@ -16,16 +16,16 @@
 
 import org.literacyapp.LiteracyApplication;
 import org.literacyapp.R;
-import org.literacyapp.dao.AudioDao;
-import org.literacyapp.dao.JoinVideosWithNumbersDao;
-import org.literacyapp.dao.NumberDao;
-import org.literacyapp.dao.VideoDao;
+import org.literacyapp.contentprovider.dao.AudioDao;
+import org.literacyapp.contentprovider.dao.JoinVideosWithNumbersDao;
+import org.literacyapp.contentprovider.dao.NumberDao;
+import org.literacyapp.contentprovider.dao.VideoDao;
+import org.literacyapp.contentprovider.model.Student;
+import org.literacyapp.contentprovider.model.content.Number;
+import org.literacyapp.contentprovider.model.content.multimedia.Audio;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinVideosWithNumbers;
+import org.literacyapp.contentprovider.model.content.multimedia.Video;
 import org.literacyapp.logic.CurriculumHelper;
-import org.literacyapp.model.Student;
-import org.literacyapp.model.content.Number;
-import org.literacyapp.model.content.multimedia.Audio;
-import org.literacyapp.model.content.multimedia.JoinVideosWithNumbers;
-import org.literacyapp.model.content.multimedia.Video;
 import org.literacyapp.util.MediaPlayerHelper;
 import org.literacyapp.util.MultimediaHelper;
 import org.literacyapp.util.TtsHelper;
diff --git a/app/src/main/java/org/literacyapp/content/task/VideoActivity.java b/app/src/main/java/org/literacyapp/content/task/VideoActivity.java
index 4fa6edf..8c9cc89 100644
--- a/app/src/main/java/org/literacyapp/content/task/VideoActivity.java
+++ b/app/src/main/java/org/literacyapp/content/task/VideoActivity.java
@@ -10,8 +10,8 @@
 
 import org.literacyapp.LiteracyApplication;
 import org.literacyapp.R;
-import org.literacyapp.dao.VideoDao;
-import org.literacyapp.model.content.multimedia.Video;
+import org.literacyapp.contentprovider.dao.VideoDao;
+import org.literacyapp.contentprovider.model.content.multimedia.Video;
 import org.literacyapp.util.MultimediaHelper;
 
 import java.io.File;
diff --git a/app/src/main/java/org/literacyapp/content/task/VisemeActivity.java b/app/src/main/java/org/literacyapp/content/task/VisemeActivity.java
index cbe2221..b409c1c 100644
--- a/app/src/main/java/org/literacyapp/content/task/VisemeActivity.java
+++ b/app/src/main/java/org/literacyapp/content/task/VisemeActivity.java
@@ -16,10 +16,10 @@
 
 import org.literacyapp.LiteracyApplication;
 import org.literacyapp.R;
-import org.literacyapp.dao.AudioDao;
-import org.literacyapp.dao.LetterDao;
-import org.literacyapp.model.content.Letter;
-import org.literacyapp.model.content.multimedia.Audio;
+import org.literacyapp.contentprovider.dao.AudioDao;
+import org.literacyapp.contentprovider.dao.LetterDao;
+import org.literacyapp.contentprovider.model.content.Letter;
+import org.literacyapp.contentprovider.model.content.multimedia.Audio;
 import org.literacyapp.util.MediaPlayerHelper;
 import org.literacyapp.util.MultimediaHelper;
 import org.literacyapp.util.TtsHelper;
diff --git a/app/src/main/java/org/literacyapp/logic/CurriculumHelper.java b/app/src/main/java/org/literacyapp/logic/CurriculumHelper.java
index 2aaa9f0..e4e6d2c 100644
--- a/app/src/main/java/org/literacyapp/logic/CurriculumHelper.java
+++ b/app/src/main/java/org/literacyapp/logic/CurriculumHelper.java
@@ -4,11 +4,11 @@
 import android.util.Log;
 
 import org.literacyapp.LiteracyApplication;
-import org.literacyapp.dao.LetterDao;
-import org.literacyapp.dao.NumberDao;
-import org.literacyapp.model.Student;
-import org.literacyapp.model.content.Letter;
-import org.literacyapp.model.content.Number;
+import org.literacyapp.contentprovider.dao.LetterDao;
+import org.literacyapp.contentprovider.dao.NumberDao;
+import org.literacyapp.contentprovider.model.Student;
+import org.literacyapp.contentprovider.model.content.Letter;
+import org.literacyapp.contentprovider.model.content.Number;
 import org.literacyapp.model.enums.content.LiteracySkill;
 import org.literacyapp.model.enums.content.NumeracySkill;
 
diff --git a/app/src/main/java/org/literacyapp/receiver/BootReceiver.java b/app/src/main/java/org/literacyapp/receiver/BootReceiver.java
index aa11f42..9cca52b 100644
--- a/app/src/main/java/org/literacyapp/receiver/BootReceiver.java
+++ b/app/src/main/java/org/literacyapp/receiver/BootReceiver.java
@@ -15,6 +15,7 @@
 import org.literacyapp.service.synchronization.MergeSimilarStudentsJobService;
 
 public class BootReceiver extends BroadcastReceiver {
+
     public static final int MINUTES_BETWEEN_AUTHENTICATIONS = 30;
     private static final int MINUTES_BETWEEN_FACE_RECOGNITION_TRAININGS = 15;
     private static final int HOURS_BETWEEN_MERGING_SIMILAR_STUDENTS = 24;
diff --git a/app/src/main/java/org/literacyapp/service/FaceRecognitionTrainingJobService.java b/app/src/main/java/org/literacyapp/service/FaceRecognitionTrainingJobService.java
index a79a739..2593ee9 100644
--- a/app/src/main/java/org/literacyapp/service/FaceRecognitionTrainingJobService.java
+++ b/app/src/main/java/org/literacyapp/service/FaceRecognitionTrainingJobService.java
@@ -6,11 +6,8 @@
 
 import org.literacyapp.authentication.thread.TrainingThread;
 
-/**
- * Created by sladomic on 26.11.16.
- */
-
 public class FaceRecognitionTrainingJobService extends JobService {
+
     private TrainingThread trainingThread;
     private JobParameters jobParameters;
 
diff --git a/app/src/main/java/org/literacyapp/service/synchronization/AuthenticationJobService.java b/app/src/main/java/org/literacyapp/service/synchronization/AuthenticationJobService.java
index 8c14433..d141a66 100644
--- a/app/src/main/java/org/literacyapp/service/synchronization/AuthenticationJobService.java
+++ b/app/src/main/java/org/literacyapp/service/synchronization/AuthenticationJobService.java
@@ -2,31 +2,12 @@
 
 import android.app.job.JobParameters;
 import android.app.job.JobService;
-import android.content.Context;
-import android.content.Intent;
-import android.hardware.display.DisplayManager;
 import android.util.Log;
-import android.view.Display;
 
-import org.literacyapp.LiteracyApplication;
-import org.literacyapp.authentication.AuthenticationActivity;
 import org.literacyapp.authentication.thread.AuthenticationThread;
-import org.literacyapp.dao.AuthenticationEventDao;
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.dao.StudentImageCollectionEventDao;
-import org.literacyapp.model.analytics.AuthenticationEvent;
-import org.literacyapp.model.analytics.StudentImageCollectionEvent;
-import org.literacyapp.receiver.BootReceiver;
-import org.literacyapp.service.FaceRecognitionTrainingJobService;
-
-import java.util.Date;
-import java.util.List;
-
-/**
- * Created by sladomic on 26.11.16.
- */
 
 public class AuthenticationJobService extends JobService {
+
     private AuthenticationThread authenticationThread;
     private JobParameters jobParameters;
 
diff --git a/app/src/main/java/org/literacyapp/service/synchronization/DownloadContentAsyncTask.java b/app/src/main/java/org/literacyapp/service/synchronization/DownloadContentAsyncTask.java
index 43c142d..b05f9d3 100644
--- a/app/src/main/java/org/literacyapp/service/synchronization/DownloadContentAsyncTask.java
+++ b/app/src/main/java/org/literacyapp/service/synchronization/DownloadContentAsyncTask.java
@@ -12,39 +12,39 @@
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.literacyapp.LiteracyApplication;
-import org.literacyapp.dao.AllophoneDao;
-import org.literacyapp.dao.AudioDao;
-import org.literacyapp.dao.GsonToGreenDaoConverter;
-import org.literacyapp.dao.ImageDao;
-import org.literacyapp.dao.JoinAudiosWithLettersDao;
-import org.literacyapp.dao.JoinAudiosWithNumbersDao;
-import org.literacyapp.dao.JoinAudiosWithWordsDao;
-import org.literacyapp.dao.JoinImagesWithLettersDao;
-import org.literacyapp.dao.JoinImagesWithNumbersDao;
-import org.literacyapp.dao.JoinImagesWithWordsDao;
-import org.literacyapp.dao.JoinVideosWithLettersDao;
-import org.literacyapp.dao.JoinVideosWithNumbersDao;
-import org.literacyapp.dao.JoinVideosWithWordsDao;
-import org.literacyapp.dao.LetterDao;
-import org.literacyapp.dao.NumberDao;
-import org.literacyapp.dao.VideoDao;
-import org.literacyapp.dao.WordDao;
-import org.literacyapp.model.content.Allophone;
-import org.literacyapp.model.content.Letter;
-import org.literacyapp.model.content.Number;
-import org.literacyapp.model.content.Word;
-import org.literacyapp.model.content.multimedia.Audio;
-import org.literacyapp.model.content.multimedia.Image;
-import org.literacyapp.model.content.multimedia.JoinAudiosWithLetters;
-import org.literacyapp.model.content.multimedia.JoinAudiosWithNumbers;
-import org.literacyapp.model.content.multimedia.JoinAudiosWithWords;
-import org.literacyapp.model.content.multimedia.JoinImagesWithLetters;
-import org.literacyapp.model.content.multimedia.JoinImagesWithNumbers;
-import org.literacyapp.model.content.multimedia.JoinImagesWithWords;
-import org.literacyapp.model.content.multimedia.JoinVideosWithLetters;
-import org.literacyapp.model.content.multimedia.JoinVideosWithNumbers;
-import org.literacyapp.model.content.multimedia.JoinVideosWithWords;
-import org.literacyapp.model.content.multimedia.Video;
+import org.literacyapp.contentprovider.dao.AllophoneDao;
+import org.literacyapp.contentprovider.dao.AudioDao;
+import org.literacyapp.contentprovider.dao.GsonToGreenDaoConverter;
+import org.literacyapp.contentprovider.dao.ImageDao;
+import org.literacyapp.contentprovider.dao.JoinAudiosWithLettersDao;
+import org.literacyapp.contentprovider.dao.JoinAudiosWithNumbersDao;
+import org.literacyapp.contentprovider.dao.JoinAudiosWithWordsDao;
+import org.literacyapp.contentprovider.dao.JoinImagesWithLettersDao;
+import org.literacyapp.contentprovider.dao.JoinImagesWithNumbersDao;
+import org.literacyapp.contentprovider.dao.JoinImagesWithWordsDao;
+import org.literacyapp.contentprovider.dao.JoinVideosWithLettersDao;
+import org.literacyapp.contentprovider.dao.JoinVideosWithNumbersDao;
+import org.literacyapp.contentprovider.dao.JoinVideosWithWordsDao;
+import org.literacyapp.contentprovider.dao.LetterDao;
+import org.literacyapp.contentprovider.dao.NumberDao;
+import org.literacyapp.contentprovider.dao.VideoDao;
+import org.literacyapp.contentprovider.dao.WordDao;
+import org.literacyapp.contentprovider.model.content.Allophone;
+import org.literacyapp.contentprovider.model.content.Letter;
+import org.literacyapp.contentprovider.model.content.Number;
+import org.literacyapp.contentprovider.model.content.Word;
+import org.literacyapp.contentprovider.model.content.multimedia.Audio;
+import org.literacyapp.contentprovider.model.content.multimedia.Image;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinAudiosWithLetters;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinAudiosWithNumbers;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinAudiosWithWords;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinImagesWithLetters;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinImagesWithNumbers;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinImagesWithWords;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinVideosWithLetters;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinVideosWithNumbers;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinVideosWithWords;
+import org.literacyapp.contentprovider.model.content.multimedia.Video;
 import org.literacyapp.model.gson.content.AllophoneGson;
 import org.literacyapp.model.gson.content.LetterGson;
 import org.literacyapp.model.gson.content.NumberGson;
@@ -64,8 +64,6 @@
 import java.io.IOException;
 import java.lang.reflect.Type;
 
-import static org.literacyapp.dao.GsonToGreenDaoConverter.getLetter;
-
 public class DownloadContentAsyncTask extends AsyncTask<Void, String, String> {
 
     private Context context;
@@ -170,7 +168,7 @@ protected String doInBackground(Void... voids) {
                 for (int i = 0; i < jsonArray.length(); i++) {
                     Type type = new TypeToken<LetterGson>(){}.getType();
                     LetterGson letterGson = new Gson().fromJson(jsonArray.getString(i), type);
-                    Letter letter = getLetter(letterGson);
+                    Letter letter = GsonToGreenDaoConverter.getLetter(letterGson);
                     Letter existingLetter = letterDao.queryBuilder()
                             .where(LetterDao.Properties.Id.eq(letter.getId()))
                             .unique();
diff --git a/app/src/main/java/org/literacyapp/service/synchronization/MergeSimilarStudentsJobService.java b/app/src/main/java/org/literacyapp/service/synchronization/MergeSimilarStudentsJobService.java
index 55ca61c..5685313 100644
--- a/app/src/main/java/org/literacyapp/service/synchronization/MergeSimilarStudentsJobService.java
+++ b/app/src/main/java/org/literacyapp/service/synchronization/MergeSimilarStudentsJobService.java
@@ -7,6 +7,7 @@
 import org.literacyapp.authentication.thread.MergeThread;
 
 public class MergeSimilarStudentsJobService extends JobService {
+
     private MergeThread mergeThread;
     private JobParameters jobParameters;
 
diff --git a/app/src/main/java/org/literacyapp/util/AiHelper.java b/app/src/main/java/org/literacyapp/util/AiHelper.java
index 05841bf..0031c2e 100644
--- a/app/src/main/java/org/literacyapp/util/AiHelper.java
+++ b/app/src/main/java/org/literacyapp/util/AiHelper.java
@@ -4,10 +4,6 @@
 
 import java.io.File;
 
-/**
- * Created by sladomic on 26.11.16.
- */
-
 public class AiHelper {
 
     public static File getAiDirectory() {
diff --git a/app/src/main/java/org/literacyapp/util/DeviceInfoHelper.java b/app/src/main/java/org/literacyapp/util/DeviceInfoHelper.java
index 76f6f6c..a5c82b9 100644
--- a/app/src/main/java/org/literacyapp/util/DeviceInfoHelper.java
+++ b/app/src/main/java/org/literacyapp/util/DeviceInfoHelper.java
@@ -6,9 +6,9 @@
 import android.util.Log;
 
 import org.literacyapp.LiteracyApplication;
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.dao.DeviceDao;
-import org.literacyapp.model.Device;
+import org.literacyapp.contentprovider.dao.DaoSession;
+import org.literacyapp.contentprovider.dao.DeviceDao;
+import org.literacyapp.contentprovider.model.Device;
 import org.literacyapp.model.enums.Locale;
 
 import java.io.UnsupportedEncodingException;
diff --git a/app/src/main/java/org/literacyapp/util/MultimediaHelper.java b/app/src/main/java/org/literacyapp/util/MultimediaHelper.java
index 35e4f11..ae36cfd 100644
--- a/app/src/main/java/org/literacyapp/util/MultimediaHelper.java
+++ b/app/src/main/java/org/literacyapp/util/MultimediaHelper.java
@@ -6,22 +6,20 @@
 import android.widget.ImageView;
 
 import org.literacyapp.R;
-import org.literacyapp.dao.converter.StringSetConverter;
-import org.literacyapp.model.content.multimedia.Audio;
-import org.literacyapp.model.content.multimedia.Image;
-import org.literacyapp.model.content.multimedia.Video;
+import org.literacyapp.contentprovider.model.content.multimedia.Audio;
+import org.literacyapp.contentprovider.model.content.multimedia.Image;
+import org.literacyapp.contentprovider.model.content.multimedia.Video;
 
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 
-import pl.droidsonroids.gif.GifImageView;
-
 /**
  * Helper class for determining folder paths of multimedia content.
  */
 public class MultimediaHelper {
+
     private static final String AUTHENTICATION_INSTRUCTION_BOY = "authentication_instruction_640";
     private static final String AUTHENTICATION_INSTRUCTION_GIRL = "authentication_instruction_girl_640";
     public static final String RESOURCES_DRAWABLE_FOLDER = "drawable";
diff --git a/app/src/main/java/org/literacyapp/util/RootHelper.java b/app/src/main/java/org/literacyapp/util/RootHelper.java
index 4a4e8ad..1fa1906 100644
--- a/app/src/main/java/org/literacyapp/util/RootHelper.java
+++ b/app/src/main/java/org/literacyapp/util/RootHelper.java
@@ -9,10 +9,6 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 
-/**
- * Created by sladomic on 13.01.17.
- */
-
 public class RootHelper {
     public static String runAsRoot(String[] commands) throws IOException, InterruptedException {
         Log.i(RootHelper.class.getName(), "runAsRoot");
diff --git a/app/src/main/java/org/literacyapp/util/StudentHelper.java b/app/src/main/java/org/literacyapp/util/StudentHelper.java
index 6cb744c..dff6632 100644
--- a/app/src/main/java/org/literacyapp/util/StudentHelper.java
+++ b/app/src/main/java/org/literacyapp/util/StudentHelper.java
@@ -4,7 +4,7 @@
 import android.os.Environment;
 import android.util.Log;
 
-import org.literacyapp.dao.StudentDao;
+import org.literacyapp.contentprovider.dao.StudentDao;
 
 import java.io.File;
 
diff --git a/app/src/main/java/org/literacyapp/util/StudentUpdateHelper.java b/app/src/main/java/org/literacyapp/util/StudentUpdateHelper.java
index ebc7f4e..ce673cc 100644
--- a/app/src/main/java/org/literacyapp/util/StudentUpdateHelper.java
+++ b/app/src/main/java/org/literacyapp/util/StudentUpdateHelper.java
@@ -4,10 +4,10 @@
 import android.content.Intent;
 import android.util.Log;
 
+import org.literacyapp.contentprovider.model.Student;
+import org.literacyapp.contentprovider.model.content.Letter;
+import org.literacyapp.contentprovider.model.content.Number;
 import org.literacyapp.logic.CurriculumHelper;
-import org.literacyapp.model.Student;
-import org.literacyapp.model.content.Letter;
-import org.literacyapp.model.content.Number;
 import org.literacyapp.model.enums.content.LiteracySkill;
 import org.literacyapp.model.enums.content.NumeracySkill;
 
diff --git a/contentprovider/build.gradle b/contentprovider/build.gradle
index 6de3270..686f2e4 100644
--- a/contentprovider/build.gradle
+++ b/contentprovider/build.gradle
@@ -1,4 +1,5 @@
 apply plugin: 'com.android.library'
+apply plugin: 'org.greenrobot.greendao'
 
 android {
     compileSdkVersion 23
@@ -7,8 +8,8 @@ android {
     defaultConfig {
         minSdkVersion 21
         targetSdkVersion 23
-        versionCode 1004003
-        versionName "1.4.3"
+        versionCode 1005002
+        versionName "1.5.2"
 
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
 
@@ -21,6 +22,22 @@ android {
     }
 }
 
+greendao {
+    schemaVersion android.defaultConfig.versionCode
+    daoPackage 'org.literacyapp.contentprovider.dao'
+    targetGenDir '../contentprovider/src/main/java'
+}
+
+buildscript {
+    repositories {
+        jcenter()
+        mavenCentral()
+    }
+    dependencies {
+        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
+    }
+}
+
 dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
 
@@ -29,5 +46,7 @@ dependencies {
     })
     testCompile 'junit:junit:4.12'
 
+    compile 'org.literacyapp:literacyapp-model:1.1.33'
+    compile 'org.greenrobot:greendao:3.2.0'
     compile 'com.android.support:appcompat-v7:23.4.0'
 }
diff --git a/contentprovider/src/main/AndroidManifest.xml b/contentprovider/src/main/AndroidManifest.xml
index 7830aae..e9c93b1 100644
--- a/contentprovider/src/main/AndroidManifest.xml
+++ b/contentprovider/src/main/AndroidManifest.xml
@@ -1,8 +1,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="org.literacyapp.contentprovider">
 
-    <application android:allowBackup="true" android:label="@string/app_name"
-        android:supportsRtl="true">
+    <application
+        android:label="@string/app_name">
 
     </application>
 
diff --git a/contentprovider/src/main/java/org/literacyapp/contentprovider/ContentProvider.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/ContentProvider.java
new file mode 100644
index 0000000..df54a7f
--- /dev/null
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/ContentProvider.java
@@ -0,0 +1,200 @@
+package org.literacyapp.contentprovider;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.os.Environment;
+import android.util.Log;
+
+import org.literacyapp.contentprovider.dao.AudioDao;
+import org.literacyapp.contentprovider.dao.CustomDaoMaster;
+import org.literacyapp.contentprovider.dao.DaoSession;
+import org.literacyapp.contentprovider.dao.ImageDao;
+import org.literacyapp.contentprovider.dao.LetterDao;
+import org.literacyapp.contentprovider.dao.NumberDao;
+import org.literacyapp.contentprovider.dao.VideoDao;
+import org.literacyapp.contentprovider.dao.WordDao;
+import org.literacyapp.contentprovider.model.Student;
+import org.literacyapp.contentprovider.model.content.Letter;
+import org.literacyapp.contentprovider.model.content.Number;
+import org.literacyapp.contentprovider.model.content.Word;
+import org.literacyapp.contentprovider.model.content.multimedia.Audio;
+import org.literacyapp.contentprovider.model.content.multimedia.Image;
+import org.literacyapp.contentprovider.model.content.multimedia.Video;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Helper class for providing content downloaded from the website.
+ */
+public class ContentProvider {
+
+    public static final int INITIAL_LETTER_COUNT = 3;
+
+    public static final int INITIAL_NUMBER_COUNT = 3;
+
+    private static DaoSession daoSession;
+
+    public static DaoSession initializeDb(Context context) {
+        Log.i(ContentProvider.class.getName(), "initializeDb");
+
+        // Initialize greenDAO database
+        String dbName = Environment.getExternalStorageDirectory() + "/.literacyapp/database/literacyapp-db";
+        CustomDaoMaster.DevOpenHelper openHelper = new CustomDaoMaster.DevOpenHelper(context, dbName, null);
+        SQLiteDatabase db = openHelper.getReadableDatabase(); // read-only
+        CustomDaoMaster daoMaster = new CustomDaoMaster(db);
+        daoSession = daoMaster.newSession();
+
+        return daoSession;
+    }
+
+    public static List<Letter> getAvailableLetters() {
+        Log.i(ContentProvider.class.getName(), "getAvailableLetters");
+
+        // TODO: get current Student
+        Student student = null;
+
+        LetterDao letterDao = daoSession.getLetterDao();
+
+        // Copied from CurriculumHelper.java:
+
+        List<Letter> letters = new ArrayList<>();
+
+        if (student == null) {
+            // Student not yet identified
+
+            // Fetch default list
+            letters = letterDao.queryBuilder()
+                    .orderDesc(LetterDao.Properties.UsageCount)
+                    .orderAsc(LetterDao.Properties.Text)
+                    .limit(INITIAL_LETTER_COUNT)
+                    .list();
+
+            // TODO: check for Letter learning events matching Device
+        } else {
+            // Fetch default list
+            letters = letterDao.queryBuilder()
+                    .orderDesc(LetterDao.Properties.UsageCount)
+                    .orderAsc(LetterDao.Properties.Text)
+                    .limit(INITIAL_LETTER_COUNT)
+                    .list();
+
+            // TODO: check for Letter learning events matching Student
+        }
+
+        return letters;
+    }
+
+    public static List<Number> getAvailableNumbers() {
+        Log.i(ContentProvider.class.getName(), "getAvailableNumbers");
+
+        // TODO: get current Student
+        Student student = null;
+
+        NumberDao numberDao = daoSession.getNumberDao();
+
+        // Copied from CurriculumHelper.java:
+
+        List<Number> numbers = new ArrayList<>();
+
+        if (student == null) {
+            // Student not yet identified
+
+            // Fetch default list
+            numbers = numberDao.queryBuilder()
+                    .where(NumberDao.Properties.Value.notEq(0))
+                    .orderAsc(NumberDao.Properties.Value)
+                    .limit(INITIAL_NUMBER_COUNT)
+                    .list();
+
+            // TODO: check for Number learning events matching Device
+        } else {
+            // Fetch default list
+            numbers = numberDao.queryBuilder()
+                    .where(NumberDao.Properties.Value.notEq(0))
+                    .orderAsc(NumberDao.Properties.Value)
+                    .limit(INITIAL_NUMBER_COUNT)
+                    .list();
+
+            // TODO: check for Number learning events matching Student
+        }
+
+        return numbers;
+    }
+
+    public static List<Number> getAllNumbers() {
+        Log.i(ContentProvider.class.getName(), "getAvailableNumbers");
+
+        NumberDao numberDao = daoSession.getNumberDao();
+
+        List<Number> numbers = numberDao.loadAll();
+
+        return numbers;
+    }
+
+    public static List<Letter> getAllLetters() {
+        Log.i(ContentProvider.class.getName(), "getAvailableLetters");
+
+        LetterDao letterDao = daoSession.getLetterDao();
+
+        List<Letter> letters = letterDao.loadAll();
+
+        return letters;
+    }
+
+    public static List<Word> getAllWords() {
+        Log.i(ContentProvider.class.getName(), "getAvailableWords");
+
+        WordDao wordDao = daoSession.getWordDao();
+
+        List<Word> words = wordDao.loadAll();
+
+        return words;
+    }
+
+    public static List<Word> getAllWordsOrderedByFrequency() {
+        Log.i(ContentProvider.class.getName(), "getAvailableWords");
+
+        WordDao wordDao = daoSession.getWordDao();
+
+        List<Word> words = wordDao.loadAll();
+
+        return words;
+    }
+
+    // TODO: getAllStoryBooks()
+
+    public static List<Audio> getAllAudios() {
+        Log.i(ContentProvider.class.getName(), "getAvailableNumbers");
+
+        AudioDao audioDao = daoSession.getAudioDao();
+
+        List<Audio> audios = audioDao.loadAll();
+
+        return audios;
+    }
+    
+    public static List<Image> getAllImages() {
+        Log.i(ContentProvider.class.getName(), "getAvailableNumbers");
+
+        ImageDao imageDao = daoSession.getImageDao();
+        
+        List<Image> images = imageDao.loadAll();
+        
+        return images;
+    }
+
+//    public static List<Image> getImages(Word word) {
+//        // TODO
+//    }
+
+    public static List<Video> getAllVideos() {
+        Log.i(ContentProvider.class.getName(), "getAvailableNumbers");
+
+        VideoDao videoDao = daoSession.getVideoDao();
+
+        List<Video> videos = videoDao.loadAll();
+
+        return videos;
+    }
+}
diff --git a/contentprovider/src/main/java/org/literacyapp/contentprovider/LetterContentProvider.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/LetterContentProvider.java
deleted file mode 100644
index 802c0b9..0000000
--- a/contentprovider/src/main/java/org/literacyapp/contentprovider/LetterContentProvider.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.literacyapp.contentprovider;
-
-public class LetterContentProvider {
-
-    public static String getAvailableLetters() {
-        // TODO
-        return null;
-    }
-}
diff --git a/app/src/main/java/org/literacyapp/dao/AllophoneDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/AllophoneDao.java
similarity index 94%
rename from app/src/main/java/org/literacyapp/dao/AllophoneDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/AllophoneDao.java
index 0a5f519..26ef9af 100644
--- a/app/src/main/java/org/literacyapp/dao/AllophoneDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/AllophoneDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteStatement;
@@ -10,17 +10,17 @@
 import org.greenrobot.greendao.database.DatabaseStatement;
 
 import java.util.Calendar;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.dao.converter.ConsonantPlaceConverter;
-import org.literacyapp.dao.converter.ConsonantTypeConverter;
-import org.literacyapp.dao.converter.ConsonantVoicingConverter;
-import org.literacyapp.dao.converter.ContentStatusConverter;
-import org.literacyapp.dao.converter.LipRoundingConverter;
-import org.literacyapp.dao.converter.LocaleConverter;
-import org.literacyapp.dao.converter.SoundTypeConverter;
-import org.literacyapp.dao.converter.VowelFrontnessConverter;
-import org.literacyapp.dao.converter.VowelHeightConverter;
-import org.literacyapp.dao.converter.VowelLengthConverter;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.ConsonantPlaceConverter;
+import org.literacyapp.contentprovider.dao.converter.ConsonantTypeConverter;
+import org.literacyapp.contentprovider.dao.converter.ConsonantVoicingConverter;
+import org.literacyapp.contentprovider.dao.converter.ContentStatusConverter;
+import org.literacyapp.contentprovider.dao.converter.LipRoundingConverter;
+import org.literacyapp.contentprovider.dao.converter.LocaleConverter;
+import org.literacyapp.contentprovider.dao.converter.SoundTypeConverter;
+import org.literacyapp.contentprovider.dao.converter.VowelFrontnessConverter;
+import org.literacyapp.contentprovider.dao.converter.VowelHeightConverter;
+import org.literacyapp.contentprovider.dao.converter.VowelLengthConverter;
 import org.literacyapp.model.enums.Locale;
 import org.literacyapp.model.enums.content.ContentStatus;
 import org.literacyapp.model.enums.content.allophone.ConsonantPlace;
@@ -32,7 +32,7 @@
 import org.literacyapp.model.enums.content.allophone.VowelHeight;
 import org.literacyapp.model.enums.content.allophone.VowelLength;
 
-import org.literacyapp.model.content.Allophone;
+import org.literacyapp.contentprovider.model.content.Allophone;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/AudioDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/AudioDao.java
similarity index 95%
rename from app/src/main/java/org/literacyapp/dao/AudioDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/AudioDao.java
index 14871d3..b87a8a6 100644
--- a/app/src/main/java/org/literacyapp/dao/AudioDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/AudioDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteStatement;
@@ -11,16 +11,16 @@
 
 import java.util.Calendar;
 import java.util.Set;
-import org.literacyapp.dao.converter.AudioFormatConverter;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.dao.converter.ContentStatusConverter;
-import org.literacyapp.dao.converter.LocaleConverter;
-import org.literacyapp.dao.converter.StringSetConverter;
+import org.literacyapp.contentprovider.dao.converter.AudioFormatConverter;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.ContentStatusConverter;
+import org.literacyapp.contentprovider.dao.converter.LocaleConverter;
+import org.literacyapp.contentprovider.dao.converter.StringSetConverter;
 import org.literacyapp.model.enums.Locale;
 import org.literacyapp.model.enums.content.AudioFormat;
 import org.literacyapp.model.enums.content.ContentStatus;
 
-import org.literacyapp.model.content.multimedia.Audio;
+import org.literacyapp.contentprovider.model.content.multimedia.Audio;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/AuthenticationEventDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/AuthenticationEventDao.java
similarity index 96%
rename from app/src/main/java/org/literacyapp/dao/AuthenticationEventDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/AuthenticationEventDao.java
index 55555cc..78b7b99 100644
--- a/app/src/main/java/org/literacyapp/dao/AuthenticationEventDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/AuthenticationEventDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import java.util.List;
 import java.util.ArrayList;
@@ -13,11 +13,11 @@
 import org.greenrobot.greendao.database.DatabaseStatement;
 
 import java.util.Calendar;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.model.Device;
-import org.literacyapp.model.Student;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.model.Device;
+import org.literacyapp.contentprovider.model.Student;
 
-import org.literacyapp.model.analytics.AuthenticationEvent;
+import org.literacyapp.contentprovider.model.analytics.AuthenticationEvent;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/CustomDaoMaster.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/CustomDaoMaster.java
similarity index 99%
rename from app/src/main/java/org/literacyapp/dao/CustomDaoMaster.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/CustomDaoMaster.java
index 2717d76..652c49b 100644
--- a/app/src/main/java/org/literacyapp/dao/CustomDaoMaster.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/CustomDaoMaster.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.content.Context;
 import android.database.sqlite.SQLiteDatabase;
diff --git a/app/src/main/java/org/literacyapp/dao/DaoMaster.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/DaoMaster.java
similarity index 97%
rename from app/src/main/java/org/literacyapp/dao/DaoMaster.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/DaoMaster.java
index 0af0589..f8adfc4 100644
--- a/app/src/main/java/org/literacyapp/dao/DaoMaster.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/DaoMaster.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.content.Context;
 import android.database.sqlite.SQLiteDatabase;
@@ -14,10 +14,10 @@
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /**
- * Master of DAO (schema version 1004003): knows all DAOs.
+ * Master of DAO (schema version 1005002): knows all DAOs.
  */
 public class DaoMaster extends AbstractDaoMaster {
-    public static final int SCHEMA_VERSION = 1004003;
+    public static final int SCHEMA_VERSION = 1005002;
 
     /** Creates underlying database table using DAOs. */
     public static void createAllTables(Database db, boolean ifNotExists) {
diff --git a/app/src/main/java/org/literacyapp/dao/DaoSession.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/DaoSession.java
similarity index 80%
rename from app/src/main/java/org/literacyapp/dao/DaoSession.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/DaoSession.java
index ebbd564..05d740f 100644
--- a/app/src/main/java/org/literacyapp/dao/DaoSession.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/DaoSession.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import java.util.Map;
 
@@ -8,53 +8,53 @@
 import org.greenrobot.greendao.identityscope.IdentityScopeType;
 import org.greenrobot.greendao.internal.DaoConfig;
 
-import org.literacyapp.model.analytics.AuthenticationEvent;
-import org.literacyapp.model.analytics.StudentImageCollectionEvent;
-import org.literacyapp.model.content.Allophone;
-import org.literacyapp.model.content.Letter;
-import org.literacyapp.model.content.multimedia.Audio;
-import org.literacyapp.model.content.multimedia.Image;
-import org.literacyapp.model.content.multimedia.JoinAudiosWithLetters;
-import org.literacyapp.model.content.multimedia.JoinAudiosWithNumbers;
-import org.literacyapp.model.content.multimedia.JoinAudiosWithWords;
-import org.literacyapp.model.content.multimedia.JoinImagesWithLetters;
-import org.literacyapp.model.content.multimedia.JoinImagesWithNumbers;
-import org.literacyapp.model.content.multimedia.JoinImagesWithWords;
-import org.literacyapp.model.content.multimedia.JoinVideosWithLetters;
-import org.literacyapp.model.content.multimedia.JoinVideosWithNumbers;
-import org.literacyapp.model.content.multimedia.JoinVideosWithWords;
-import org.literacyapp.model.content.multimedia.Video;
-import org.literacyapp.model.content.Number;
-import org.literacyapp.model.content.Word;
-import org.literacyapp.model.Device;
-import org.literacyapp.model.JoinStudentsWithDevices;
-import org.literacyapp.model.Student;
-import org.literacyapp.model.StudentImage;
-import org.literacyapp.model.StudentImageFeature;
-
-import org.literacyapp.dao.AuthenticationEventDao;
-import org.literacyapp.dao.StudentImageCollectionEventDao;
-import org.literacyapp.dao.AllophoneDao;
-import org.literacyapp.dao.LetterDao;
-import org.literacyapp.dao.AudioDao;
-import org.literacyapp.dao.ImageDao;
-import org.literacyapp.dao.JoinAudiosWithLettersDao;
-import org.literacyapp.dao.JoinAudiosWithNumbersDao;
-import org.literacyapp.dao.JoinAudiosWithWordsDao;
-import org.literacyapp.dao.JoinImagesWithLettersDao;
-import org.literacyapp.dao.JoinImagesWithNumbersDao;
-import org.literacyapp.dao.JoinImagesWithWordsDao;
-import org.literacyapp.dao.JoinVideosWithLettersDao;
-import org.literacyapp.dao.JoinVideosWithNumbersDao;
-import org.literacyapp.dao.JoinVideosWithWordsDao;
-import org.literacyapp.dao.VideoDao;
-import org.literacyapp.dao.NumberDao;
-import org.literacyapp.dao.WordDao;
-import org.literacyapp.dao.DeviceDao;
-import org.literacyapp.dao.JoinStudentsWithDevicesDao;
-import org.literacyapp.dao.StudentDao;
-import org.literacyapp.dao.StudentImageDao;
-import org.literacyapp.dao.StudentImageFeatureDao;
+import org.literacyapp.contentprovider.model.analytics.AuthenticationEvent;
+import org.literacyapp.contentprovider.model.analytics.StudentImageCollectionEvent;
+import org.literacyapp.contentprovider.model.content.Allophone;
+import org.literacyapp.contentprovider.model.content.Letter;
+import org.literacyapp.contentprovider.model.content.multimedia.Audio;
+import org.literacyapp.contentprovider.model.content.multimedia.Image;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinAudiosWithLetters;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinAudiosWithNumbers;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinAudiosWithWords;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinImagesWithLetters;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinImagesWithNumbers;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinImagesWithWords;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinVideosWithLetters;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinVideosWithNumbers;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinVideosWithWords;
+import org.literacyapp.contentprovider.model.content.multimedia.Video;
+import org.literacyapp.contentprovider.model.content.Number;
+import org.literacyapp.contentprovider.model.content.Word;
+import org.literacyapp.contentprovider.model.Device;
+import org.literacyapp.contentprovider.model.JoinStudentsWithDevices;
+import org.literacyapp.contentprovider.model.Student;
+import org.literacyapp.contentprovider.model.StudentImage;
+import org.literacyapp.contentprovider.model.StudentImageFeature;
+
+import org.literacyapp.contentprovider.dao.AuthenticationEventDao;
+import org.literacyapp.contentprovider.dao.StudentImageCollectionEventDao;
+import org.literacyapp.contentprovider.dao.AllophoneDao;
+import org.literacyapp.contentprovider.dao.LetterDao;
+import org.literacyapp.contentprovider.dao.AudioDao;
+import org.literacyapp.contentprovider.dao.ImageDao;
+import org.literacyapp.contentprovider.dao.JoinAudiosWithLettersDao;
+import org.literacyapp.contentprovider.dao.JoinAudiosWithNumbersDao;
+import org.literacyapp.contentprovider.dao.JoinAudiosWithWordsDao;
+import org.literacyapp.contentprovider.dao.JoinImagesWithLettersDao;
+import org.literacyapp.contentprovider.dao.JoinImagesWithNumbersDao;
+import org.literacyapp.contentprovider.dao.JoinImagesWithWordsDao;
+import org.literacyapp.contentprovider.dao.JoinVideosWithLettersDao;
+import org.literacyapp.contentprovider.dao.JoinVideosWithNumbersDao;
+import org.literacyapp.contentprovider.dao.JoinVideosWithWordsDao;
+import org.literacyapp.contentprovider.dao.VideoDao;
+import org.literacyapp.contentprovider.dao.NumberDao;
+import org.literacyapp.contentprovider.dao.WordDao;
+import org.literacyapp.contentprovider.dao.DeviceDao;
+import org.literacyapp.contentprovider.dao.JoinStudentsWithDevicesDao;
+import org.literacyapp.contentprovider.dao.StudentDao;
+import org.literacyapp.contentprovider.dao.StudentImageDao;
+import org.literacyapp.contentprovider.dao.StudentImageFeatureDao;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 
diff --git a/app/src/main/java/org/literacyapp/dao/DbMigrationHelper.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/DbMigrationHelper.java
similarity index 99%
rename from app/src/main/java/org/literacyapp/dao/DbMigrationHelper.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/DbMigrationHelper.java
index 7f0c20c..462ddbd 100644
--- a/app/src/main/java/org/literacyapp/dao/DbMigrationHelper.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/DbMigrationHelper.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.support.annotation.NonNull;
diff --git a/app/src/main/java/org/literacyapp/dao/DeviceDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/DeviceDao.java
similarity index 96%
rename from app/src/main/java/org/literacyapp/dao/DeviceDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/DeviceDao.java
index 3423ef6..2d0494f 100644
--- a/app/src/main/java/org/literacyapp/dao/DeviceDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/DeviceDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import java.util.List;
 import android.database.Cursor;
@@ -12,9 +12,9 @@
 import org.greenrobot.greendao.query.Query;
 import org.greenrobot.greendao.query.QueryBuilder;
 
-import org.literacyapp.model.JoinStudentsWithDevices;
+import org.literacyapp.contentprovider.model.JoinStudentsWithDevices;
 
-import org.literacyapp.model.Device;
+import org.literacyapp.contentprovider.model.Device;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/GsonToGreenDaoConverter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/GsonToGreenDaoConverter.java
similarity index 92%
rename from app/src/main/java/org/literacyapp/dao/GsonToGreenDaoConverter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/GsonToGreenDaoConverter.java
index 5d6f435..290779d 100644
--- a/app/src/main/java/org/literacyapp/dao/GsonToGreenDaoConverter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/GsonToGreenDaoConverter.java
@@ -1,14 +1,14 @@
-package org.literacyapp.dao;
-
-import org.literacyapp.model.Device;
-import org.literacyapp.model.Student;
-import org.literacyapp.model.content.Allophone;
-import org.literacyapp.model.content.Letter;
-import org.literacyapp.model.content.Number;
-import org.literacyapp.model.content.Word;
-import org.literacyapp.model.content.multimedia.Audio;
-import org.literacyapp.model.content.multimedia.Image;
-import org.literacyapp.model.content.multimedia.Video;
+package org.literacyapp.contentprovider.dao;
+
+import org.literacyapp.contentprovider.model.Device;
+import org.literacyapp.contentprovider.model.Student;
+import org.literacyapp.contentprovider.model.content.Allophone;
+import org.literacyapp.contentprovider.model.content.Letter;
+import org.literacyapp.contentprovider.model.content.Number;
+import org.literacyapp.contentprovider.model.content.Word;
+import org.literacyapp.contentprovider.model.content.multimedia.Audio;
+import org.literacyapp.contentprovider.model.content.multimedia.Image;
+import org.literacyapp.contentprovider.model.content.multimedia.Video;
 import org.literacyapp.model.gson.DeviceGson;
 import org.literacyapp.model.gson.StudentGson;
 import org.literacyapp.model.gson.content.AllophoneGson;
diff --git a/app/src/main/java/org/literacyapp/dao/ImageDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/ImageDao.java
similarity index 95%
rename from app/src/main/java/org/literacyapp/dao/ImageDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/ImageDao.java
index 8c1d556..729dfd9 100644
--- a/app/src/main/java/org/literacyapp/dao/ImageDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/ImageDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteStatement;
@@ -11,16 +11,16 @@
 
 import java.util.Calendar;
 import java.util.Set;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.dao.converter.ContentStatusConverter;
-import org.literacyapp.dao.converter.ImageFormatConverter;
-import org.literacyapp.dao.converter.LocaleConverter;
-import org.literacyapp.dao.converter.StringSetConverter;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.ContentStatusConverter;
+import org.literacyapp.contentprovider.dao.converter.ImageFormatConverter;
+import org.literacyapp.contentprovider.dao.converter.LocaleConverter;
+import org.literacyapp.contentprovider.dao.converter.StringSetConverter;
 import org.literacyapp.model.enums.Locale;
 import org.literacyapp.model.enums.content.ContentStatus;
 import org.literacyapp.model.enums.content.ImageFormat;
 
-import org.literacyapp.model.content.multimedia.Image;
+import org.literacyapp.contentprovider.model.content.multimedia.Image;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/JoinAudiosWithLettersDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinAudiosWithLettersDao.java
similarity index 96%
rename from app/src/main/java/org/literacyapp/dao/JoinAudiosWithLettersDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinAudiosWithLettersDao.java
index b9913cb..0577d0e 100644
--- a/app/src/main/java/org/literacyapp/dao/JoinAudiosWithLettersDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinAudiosWithLettersDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteStatement;
@@ -9,7 +9,7 @@
 import org.greenrobot.greendao.database.Database;
 import org.greenrobot.greendao.database.DatabaseStatement;
 
-import org.literacyapp.model.content.multimedia.JoinAudiosWithLetters;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinAudiosWithLetters;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/JoinAudiosWithNumbersDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinAudiosWithNumbersDao.java
similarity index 96%
rename from app/src/main/java/org/literacyapp/dao/JoinAudiosWithNumbersDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinAudiosWithNumbersDao.java
index 68e946a..5837ffa 100644
--- a/app/src/main/java/org/literacyapp/dao/JoinAudiosWithNumbersDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinAudiosWithNumbersDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteStatement;
@@ -9,7 +9,7 @@
 import org.greenrobot.greendao.database.Database;
 import org.greenrobot.greendao.database.DatabaseStatement;
 
-import org.literacyapp.model.content.multimedia.JoinAudiosWithNumbers;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinAudiosWithNumbers;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/JoinAudiosWithWordsDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinAudiosWithWordsDao.java
similarity index 96%
rename from app/src/main/java/org/literacyapp/dao/JoinAudiosWithWordsDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinAudiosWithWordsDao.java
index 5a4f264..cb7ddd4 100644
--- a/app/src/main/java/org/literacyapp/dao/JoinAudiosWithWordsDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinAudiosWithWordsDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteStatement;
@@ -9,7 +9,7 @@
 import org.greenrobot.greendao.database.Database;
 import org.greenrobot.greendao.database.DatabaseStatement;
 
-import org.literacyapp.model.content.multimedia.JoinAudiosWithWords;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinAudiosWithWords;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/JoinImagesWithLettersDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinImagesWithLettersDao.java
similarity index 96%
rename from app/src/main/java/org/literacyapp/dao/JoinImagesWithLettersDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinImagesWithLettersDao.java
index 3e94e4a..729fd3c 100644
--- a/app/src/main/java/org/literacyapp/dao/JoinImagesWithLettersDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinImagesWithLettersDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteStatement;
@@ -9,7 +9,7 @@
 import org.greenrobot.greendao.database.Database;
 import org.greenrobot.greendao.database.DatabaseStatement;
 
-import org.literacyapp.model.content.multimedia.JoinImagesWithLetters;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinImagesWithLetters;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/JoinImagesWithNumbersDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinImagesWithNumbersDao.java
similarity index 96%
rename from app/src/main/java/org/literacyapp/dao/JoinImagesWithNumbersDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinImagesWithNumbersDao.java
index 230079d..f8d8d99 100644
--- a/app/src/main/java/org/literacyapp/dao/JoinImagesWithNumbersDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinImagesWithNumbersDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteStatement;
@@ -9,7 +9,7 @@
 import org.greenrobot.greendao.database.Database;
 import org.greenrobot.greendao.database.DatabaseStatement;
 
-import org.literacyapp.model.content.multimedia.JoinImagesWithNumbers;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinImagesWithNumbers;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/JoinImagesWithWordsDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinImagesWithWordsDao.java
similarity index 96%
rename from app/src/main/java/org/literacyapp/dao/JoinImagesWithWordsDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinImagesWithWordsDao.java
index 8e979c0..7d4902e 100644
--- a/app/src/main/java/org/literacyapp/dao/JoinImagesWithWordsDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinImagesWithWordsDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteStatement;
@@ -9,7 +9,7 @@
 import org.greenrobot.greendao.database.Database;
 import org.greenrobot.greendao.database.DatabaseStatement;
 
-import org.literacyapp.model.content.multimedia.JoinImagesWithWords;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinImagesWithWords;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/JoinStudentsWithDevicesDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinStudentsWithDevicesDao.java
similarity index 97%
rename from app/src/main/java/org/literacyapp/dao/JoinStudentsWithDevicesDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinStudentsWithDevicesDao.java
index 74cabe8..a603b45 100644
--- a/app/src/main/java/org/literacyapp/dao/JoinStudentsWithDevicesDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinStudentsWithDevicesDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteStatement;
@@ -9,7 +9,7 @@
 import org.greenrobot.greendao.database.Database;
 import org.greenrobot.greendao.database.DatabaseStatement;
 
-import org.literacyapp.model.JoinStudentsWithDevices;
+import org.literacyapp.contentprovider.model.JoinStudentsWithDevices;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/JoinVideosWithLettersDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinVideosWithLettersDao.java
similarity index 96%
rename from app/src/main/java/org/literacyapp/dao/JoinVideosWithLettersDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinVideosWithLettersDao.java
index 62c5ef5..0f227df 100644
--- a/app/src/main/java/org/literacyapp/dao/JoinVideosWithLettersDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinVideosWithLettersDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteStatement;
@@ -9,7 +9,7 @@
 import org.greenrobot.greendao.database.Database;
 import org.greenrobot.greendao.database.DatabaseStatement;
 
-import org.literacyapp.model.content.multimedia.JoinVideosWithLetters;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinVideosWithLetters;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/JoinVideosWithNumbersDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinVideosWithNumbersDao.java
similarity index 96%
rename from app/src/main/java/org/literacyapp/dao/JoinVideosWithNumbersDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinVideosWithNumbersDao.java
index 4293ecb..30ae148 100644
--- a/app/src/main/java/org/literacyapp/dao/JoinVideosWithNumbersDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinVideosWithNumbersDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteStatement;
@@ -9,7 +9,7 @@
 import org.greenrobot.greendao.database.Database;
 import org.greenrobot.greendao.database.DatabaseStatement;
 
-import org.literacyapp.model.content.multimedia.JoinVideosWithNumbers;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinVideosWithNumbers;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/JoinVideosWithWordsDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinVideosWithWordsDao.java
similarity index 96%
rename from app/src/main/java/org/literacyapp/dao/JoinVideosWithWordsDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinVideosWithWordsDao.java
index 5086c14..bd47d8a 100644
--- a/app/src/main/java/org/literacyapp/dao/JoinVideosWithWordsDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/JoinVideosWithWordsDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteStatement;
@@ -9,7 +9,7 @@
 import org.greenrobot.greendao.database.Database;
 import org.greenrobot.greendao.database.DatabaseStatement;
 
-import org.literacyapp.model.content.multimedia.JoinVideosWithWords;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinVideosWithWords;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/LetterDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/LetterDao.java
similarity index 93%
rename from app/src/main/java/org/literacyapp/dao/LetterDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/LetterDao.java
index fd90a74..b932329 100644
--- a/app/src/main/java/org/literacyapp/dao/LetterDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/LetterDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import java.util.List;
 import android.database.Cursor;
@@ -13,16 +13,16 @@
 import org.greenrobot.greendao.query.QueryBuilder;
 
 import java.util.Calendar;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.dao.converter.ContentStatusConverter;
-import org.literacyapp.dao.converter.LocaleConverter;
-import org.literacyapp.model.content.multimedia.JoinAudiosWithLetters;
-import org.literacyapp.model.content.multimedia.JoinImagesWithLetters;
-import org.literacyapp.model.content.multimedia.JoinVideosWithLetters;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.ContentStatusConverter;
+import org.literacyapp.contentprovider.dao.converter.LocaleConverter;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinAudiosWithLetters;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinImagesWithLetters;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinVideosWithLetters;
 import org.literacyapp.model.enums.Locale;
 import org.literacyapp.model.enums.content.ContentStatus;
 
-import org.literacyapp.model.content.Letter;
+import org.literacyapp.contentprovider.model.content.Letter;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/NumberDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/NumberDao.java
similarity index 95%
rename from app/src/main/java/org/literacyapp/dao/NumberDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/NumberDao.java
index d17889f..1af8566 100644
--- a/app/src/main/java/org/literacyapp/dao/NumberDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/NumberDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import java.util.List;
 import java.util.ArrayList;
@@ -15,17 +15,17 @@
 import org.greenrobot.greendao.query.QueryBuilder;
 
 import java.util.Calendar;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.dao.converter.ContentStatusConverter;
-import org.literacyapp.dao.converter.LocaleConverter;
-import org.literacyapp.model.content.Word;
-import org.literacyapp.model.content.multimedia.JoinAudiosWithNumbers;
-import org.literacyapp.model.content.multimedia.JoinImagesWithNumbers;
-import org.literacyapp.model.content.multimedia.JoinVideosWithNumbers;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.ContentStatusConverter;
+import org.literacyapp.contentprovider.dao.converter.LocaleConverter;
+import org.literacyapp.contentprovider.model.content.Word;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinAudiosWithNumbers;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinImagesWithNumbers;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinVideosWithNumbers;
 import org.literacyapp.model.enums.Locale;
 import org.literacyapp.model.enums.content.ContentStatus;
 
-import org.literacyapp.model.content.Number;
+import org.literacyapp.contentprovider.model.content.Number;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/StudentDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/StudentDao.java
similarity index 96%
rename from app/src/main/java/org/literacyapp/dao/StudentDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/StudentDao.java
index 31493ba..af77fb0 100644
--- a/app/src/main/java/org/literacyapp/dao/StudentDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/StudentDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteStatement;
@@ -10,9 +10,9 @@
 import org.greenrobot.greendao.database.DatabaseStatement;
 
 import java.util.Calendar;
-import org.literacyapp.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
 
-import org.literacyapp.model.Student;
+import org.literacyapp.contentprovider.model.Student;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/StudentImageCollectionEventDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/StudentImageCollectionEventDao.java
similarity index 96%
rename from app/src/main/java/org/literacyapp/dao/StudentImageCollectionEventDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/StudentImageCollectionEventDao.java
index 4de464b..3fa6aec 100644
--- a/app/src/main/java/org/literacyapp/dao/StudentImageCollectionEventDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/StudentImageCollectionEventDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import java.util.List;
 import java.util.ArrayList;
@@ -13,11 +13,11 @@
 import org.greenrobot.greendao.database.DatabaseStatement;
 
 import java.util.Calendar;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.model.Device;
-import org.literacyapp.model.Student;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.model.Device;
+import org.literacyapp.contentprovider.model.Student;
 
-import org.literacyapp.model.analytics.StudentImageCollectionEvent;
+import org.literacyapp.contentprovider.model.analytics.StudentImageCollectionEvent;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/StudentImageDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/StudentImageDao.java
similarity index 97%
rename from app/src/main/java/org/literacyapp/dao/StudentImageDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/StudentImageDao.java
index 47fe22b..fe8d795 100644
--- a/app/src/main/java/org/literacyapp/dao/StudentImageDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/StudentImageDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import java.util.List;
 import java.util.ArrayList;
@@ -15,11 +15,11 @@
 import org.greenrobot.greendao.query.QueryBuilder;
 
 import java.util.Calendar;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.model.StudentImageFeature;
-import org.literacyapp.model.analytics.StudentImageCollectionEvent;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.model.StudentImageFeature;
+import org.literacyapp.contentprovider.model.analytics.StudentImageCollectionEvent;
 
-import org.literacyapp.model.StudentImage;
+import org.literacyapp.contentprovider.model.StudentImage;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/StudentImageFeatureDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/StudentImageFeatureDao.java
similarity index 96%
rename from app/src/main/java/org/literacyapp/dao/StudentImageFeatureDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/StudentImageFeatureDao.java
index ef1b64f..f287982 100644
--- a/app/src/main/java/org/literacyapp/dao/StudentImageFeatureDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/StudentImageFeatureDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteStatement;
@@ -10,9 +10,9 @@
 import org.greenrobot.greendao.database.DatabaseStatement;
 
 import java.util.Calendar;
-import org.literacyapp.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
 
-import org.literacyapp.model.StudentImageFeature;
+import org.literacyapp.contentprovider.model.StudentImageFeature;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/VideoDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/VideoDao.java
similarity index 95%
rename from app/src/main/java/org/literacyapp/dao/VideoDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/VideoDao.java
index 2eac5fa..5e63200 100644
--- a/app/src/main/java/org/literacyapp/dao/VideoDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/VideoDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteStatement;
@@ -11,16 +11,16 @@
 
 import java.util.Calendar;
 import java.util.Set;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.dao.converter.ContentStatusConverter;
-import org.literacyapp.dao.converter.LocaleConverter;
-import org.literacyapp.dao.converter.StringSetConverter;
-import org.literacyapp.dao.converter.VideoFormatConverter;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.ContentStatusConverter;
+import org.literacyapp.contentprovider.dao.converter.LocaleConverter;
+import org.literacyapp.contentprovider.dao.converter.StringSetConverter;
+import org.literacyapp.contentprovider.dao.converter.VideoFormatConverter;
 import org.literacyapp.model.enums.Locale;
 import org.literacyapp.model.enums.content.ContentStatus;
 import org.literacyapp.model.enums.content.VideoFormat;
 
-import org.literacyapp.model.content.multimedia.Video;
+import org.literacyapp.contentprovider.model.content.multimedia.Video;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/WordDao.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/WordDao.java
similarity index 94%
rename from app/src/main/java/org/literacyapp/dao/WordDao.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/WordDao.java
index d5ae711..f903540 100644
--- a/app/src/main/java/org/literacyapp/dao/WordDao.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/WordDao.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao;
+package org.literacyapp.contentprovider.dao;
 
 import java.util.List;
 import android.database.Cursor;
@@ -13,16 +13,16 @@
 import org.greenrobot.greendao.query.QueryBuilder;
 
 import java.util.Calendar;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.dao.converter.ContentStatusConverter;
-import org.literacyapp.dao.converter.LocaleConverter;
-import org.literacyapp.model.content.multimedia.JoinAudiosWithWords;
-import org.literacyapp.model.content.multimedia.JoinImagesWithWords;
-import org.literacyapp.model.content.multimedia.JoinVideosWithWords;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.ContentStatusConverter;
+import org.literacyapp.contentprovider.dao.converter.LocaleConverter;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinAudiosWithWords;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinImagesWithWords;
+import org.literacyapp.contentprovider.model.content.multimedia.JoinVideosWithWords;
 import org.literacyapp.model.enums.Locale;
 import org.literacyapp.model.enums.content.ContentStatus;
 
-import org.literacyapp.model.content.Word;
+import org.literacyapp.contentprovider.model.content.Word;
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /** 
diff --git a/app/src/main/java/org/literacyapp/dao/converter/AudioFormatConverter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/AudioFormatConverter.java
similarity index 94%
rename from app/src/main/java/org/literacyapp/dao/converter/AudioFormatConverter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/AudioFormatConverter.java
index 1b5873a..0877008 100644
--- a/app/src/main/java/org/literacyapp/dao/converter/AudioFormatConverter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/AudioFormatConverter.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao.converter;
+package org.literacyapp.contentprovider.dao.converter;
 
 import android.util.Log;
 
diff --git a/app/src/main/java/org/literacyapp/dao/converter/CalendarConverter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/CalendarConverter.java
similarity index 94%
rename from app/src/main/java/org/literacyapp/dao/converter/CalendarConverter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/CalendarConverter.java
index f61d535..5d3d0eb 100644
--- a/app/src/main/java/org/literacyapp/dao/converter/CalendarConverter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/CalendarConverter.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao.converter;
+package org.literacyapp.contentprovider.dao.converter;
 
 import android.util.Log;
 
diff --git a/app/src/main/java/org/literacyapp/dao/converter/ConsonantPlaceConverter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/ConsonantPlaceConverter.java
similarity index 94%
rename from app/src/main/java/org/literacyapp/dao/converter/ConsonantPlaceConverter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/ConsonantPlaceConverter.java
index 605610b..802c820 100644
--- a/app/src/main/java/org/literacyapp/dao/converter/ConsonantPlaceConverter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/ConsonantPlaceConverter.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao.converter;
+package org.literacyapp.contentprovider.dao.converter;
 
 import android.util.Log;
 
diff --git a/app/src/main/java/org/literacyapp/dao/converter/ConsonantTypeConverter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/ConsonantTypeConverter.java
similarity index 94%
rename from app/src/main/java/org/literacyapp/dao/converter/ConsonantTypeConverter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/ConsonantTypeConverter.java
index 81c8252..e80c427 100644
--- a/app/src/main/java/org/literacyapp/dao/converter/ConsonantTypeConverter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/ConsonantTypeConverter.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao.converter;
+package org.literacyapp.contentprovider.dao.converter;
 
 import android.util.Log;
 
diff --git a/app/src/main/java/org/literacyapp/dao/converter/ConsonantVoicingConverter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/ConsonantVoicingConverter.java
similarity index 94%
rename from app/src/main/java/org/literacyapp/dao/converter/ConsonantVoicingConverter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/ConsonantVoicingConverter.java
index 59a7c00..2d84ed6 100644
--- a/app/src/main/java/org/literacyapp/dao/converter/ConsonantVoicingConverter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/ConsonantVoicingConverter.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao.converter;
+package org.literacyapp.contentprovider.dao.converter;
 
 import android.util.Log;
 
diff --git a/app/src/main/java/org/literacyapp/dao/converter/ContentStatusConverter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/ContentStatusConverter.java
similarity index 94%
rename from app/src/main/java/org/literacyapp/dao/converter/ContentStatusConverter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/ContentStatusConverter.java
index 651d470..8c01bd2 100644
--- a/app/src/main/java/org/literacyapp/dao/converter/ContentStatusConverter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/ContentStatusConverter.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao.converter;
+package org.literacyapp.contentprovider.dao.converter;
 
 import android.util.Log;
 
diff --git a/app/src/main/java/org/literacyapp/dao/converter/ImageFormatConverter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/ImageFormatConverter.java
similarity index 94%
rename from app/src/main/java/org/literacyapp/dao/converter/ImageFormatConverter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/ImageFormatConverter.java
index f319625..a47a523 100644
--- a/app/src/main/java/org/literacyapp/dao/converter/ImageFormatConverter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/ImageFormatConverter.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao.converter;
+package org.literacyapp.contentprovider.dao.converter;
 
 import android.util.Log;
 
diff --git a/app/src/main/java/org/literacyapp/dao/converter/LipRoundingConverter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/LipRoundingConverter.java
similarity index 94%
rename from app/src/main/java/org/literacyapp/dao/converter/LipRoundingConverter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/LipRoundingConverter.java
index 8950e15..9cbb3d5 100644
--- a/app/src/main/java/org/literacyapp/dao/converter/LipRoundingConverter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/LipRoundingConverter.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao.converter;
+package org.literacyapp.contentprovider.dao.converter;
 
 import android.util.Log;
 
diff --git a/app/src/main/java/org/literacyapp/dao/converter/LocaleConverter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/LocaleConverter.java
similarity index 93%
rename from app/src/main/java/org/literacyapp/dao/converter/LocaleConverter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/LocaleConverter.java
index b2f54a7..035add5 100644
--- a/app/src/main/java/org/literacyapp/dao/converter/LocaleConverter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/LocaleConverter.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao.converter;
+package org.literacyapp.contentprovider.dao.converter;
 
 import android.util.Log;
 
diff --git a/app/src/main/java/org/literacyapp/dao/converter/SoundTypeConverter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/SoundTypeConverter.java
similarity index 94%
rename from app/src/main/java/org/literacyapp/dao/converter/SoundTypeConverter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/SoundTypeConverter.java
index 8bf10d7..2370972 100644
--- a/app/src/main/java/org/literacyapp/dao/converter/SoundTypeConverter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/SoundTypeConverter.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao.converter;
+package org.literacyapp.contentprovider.dao.converter;
 
 import android.util.Log;
 
diff --git a/app/src/main/java/org/literacyapp/dao/converter/StringSetConverter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/StringSetConverter.java
similarity index 95%
rename from app/src/main/java/org/literacyapp/dao/converter/StringSetConverter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/StringSetConverter.java
index 2cd99cb..84bfc39 100644
--- a/app/src/main/java/org/literacyapp/dao/converter/StringSetConverter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/StringSetConverter.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao.converter;
+package org.literacyapp.contentprovider.dao.converter;
 
 import android.util.Log;
 
diff --git a/app/src/main/java/org/literacyapp/dao/converter/VideoFormatConverter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/VideoFormatConverter.java
similarity index 94%
rename from app/src/main/java/org/literacyapp/dao/converter/VideoFormatConverter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/VideoFormatConverter.java
index e8a05ce..bae8422 100644
--- a/app/src/main/java/org/literacyapp/dao/converter/VideoFormatConverter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/VideoFormatConverter.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao.converter;
+package org.literacyapp.contentprovider.dao.converter;
 
 import android.util.Log;
 
diff --git a/app/src/main/java/org/literacyapp/dao/converter/VowelFrontnessConverter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/VowelFrontnessConverter.java
similarity index 94%
rename from app/src/main/java/org/literacyapp/dao/converter/VowelFrontnessConverter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/VowelFrontnessConverter.java
index 2d3cd37..a715eaf 100644
--- a/app/src/main/java/org/literacyapp/dao/converter/VowelFrontnessConverter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/VowelFrontnessConverter.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao.converter;
+package org.literacyapp.contentprovider.dao.converter;
 
 import android.util.Log;
 
diff --git a/app/src/main/java/org/literacyapp/dao/converter/VowelHeightConverter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/VowelHeightConverter.java
similarity index 94%
rename from app/src/main/java/org/literacyapp/dao/converter/VowelHeightConverter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/VowelHeightConverter.java
index 308b5c7..05ae64c 100644
--- a/app/src/main/java/org/literacyapp/dao/converter/VowelHeightConverter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/VowelHeightConverter.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao.converter;
+package org.literacyapp.contentprovider.dao.converter;
 
 import android.util.Log;
 
diff --git a/app/src/main/java/org/literacyapp/dao/converter/VowelLengthConverter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/VowelLengthConverter.java
similarity index 94%
rename from app/src/main/java/org/literacyapp/dao/converter/VowelLengthConverter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/VowelLengthConverter.java
index 28ef670..6a70b41 100644
--- a/app/src/main/java/org/literacyapp/dao/converter/VowelLengthConverter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/dao/converter/VowelLengthConverter.java
@@ -1,4 +1,4 @@
-package org.literacyapp.dao.converter;
+package org.literacyapp.contentprovider.dao.converter;
 
 import android.util.Log;
 
diff --git a/app/src/main/java/org/literacyapp/model/Device.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/Device.java
similarity index 95%
rename from app/src/main/java/org/literacyapp/model/Device.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/Device.java
index f180822..0d1c180 100644
--- a/app/src/main/java/org/literacyapp/model/Device.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/Device.java
@@ -1,10 +1,10 @@
-package org.literacyapp.model;
+package org.literacyapp.contentprovider.model;
 
 import org.greenrobot.greendao.annotation.Entity;
+import org.greenrobot.greendao.annotation.Generated;
 import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.NotNull;
 import org.greenrobot.greendao.annotation.Unique;
-import org.greenrobot.greendao.annotation.Generated;
 
 /**
  * Based on {@link org.literacyapp.model.gson.DeviceGson}
diff --git a/app/src/main/java/org/literacyapp/model/JoinStudentsWithDevices.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/JoinStudentsWithDevices.java
similarity index 95%
rename from app/src/main/java/org/literacyapp/model/JoinStudentsWithDevices.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/JoinStudentsWithDevices.java
index 198a364..6f190e0 100644
--- a/app/src/main/java/org/literacyapp/model/JoinStudentsWithDevices.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/JoinStudentsWithDevices.java
@@ -1,8 +1,8 @@
-package org.literacyapp.model;
+package org.literacyapp.contentprovider.model;
 
 import org.greenrobot.greendao.annotation.Entity;
-import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.Generated;
+import org.greenrobot.greendao.annotation.Id;
 
 @Entity
 public class JoinStudentsWithDevices {
diff --git a/app/src/main/java/org/literacyapp/model/Student.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/Student.java
similarity index 92%
rename from app/src/main/java/org/literacyapp/model/Student.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/Student.java
index 49756c0..a19af15 100644
--- a/app/src/main/java/org/literacyapp/model/Student.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/Student.java
@@ -1,4 +1,4 @@
-package org.literacyapp.model;
+package org.literacyapp.contentprovider.model;
 
 import org.greenrobot.greendao.DaoException;
 import org.greenrobot.greendao.annotation.Convert;
@@ -8,17 +8,14 @@
 import org.greenrobot.greendao.annotation.JoinEntity;
 import org.greenrobot.greendao.annotation.NotNull;
 import org.greenrobot.greendao.annotation.ToMany;
-import org.greenrobot.greendao.annotation.ToOne;
 import org.greenrobot.greendao.annotation.Unique;
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.dao.DeviceDao;
-import org.literacyapp.dao.StudentDao;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.model.analytics.StudentImageCollectionEvent;
+import org.literacyapp.contentprovider.dao.DaoSession;
+import org.literacyapp.contentprovider.dao.DeviceDao;
+import org.literacyapp.contentprovider.dao.StudentDao;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
 
 import java.util.Calendar;
 import java.util.List;
-import org.literacyapp.dao.StudentImageCollectionEventDao;
 
 /**
  * Based on {@link org.literacyapp.model.gson.StudentGson}
diff --git a/app/src/main/java/org/literacyapp/model/StudentImage.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/StudentImage.java
similarity index 94%
rename from app/src/main/java/org/literacyapp/model/StudentImage.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/StudentImage.java
index 4931e7e..fa2f5e8 100644
--- a/app/src/main/java/org/literacyapp/model/StudentImage.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/StudentImage.java
@@ -1,4 +1,4 @@
-package org.literacyapp.model;
+package org.literacyapp.contentprovider.model;
 
 import org.greenrobot.greendao.DaoException;
 import org.greenrobot.greendao.annotation.Convert;
@@ -7,12 +7,12 @@
 import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.NotNull;
 import org.greenrobot.greendao.annotation.ToOne;
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.dao.StudentImageCollectionEventDao;
-import org.literacyapp.dao.StudentImageDao;
-import org.literacyapp.dao.StudentImageFeatureDao;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.model.analytics.StudentImageCollectionEvent;
+import org.literacyapp.contentprovider.dao.DaoSession;
+import org.literacyapp.contentprovider.dao.StudentImageCollectionEventDao;
+import org.literacyapp.contentprovider.dao.StudentImageDao;
+import org.literacyapp.contentprovider.dao.StudentImageFeatureDao;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.model.analytics.StudentImageCollectionEvent;
 
 import java.util.Calendar;
 
diff --git a/app/src/main/java/org/literacyapp/model/StudentImageFeature.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/StudentImageFeature.java
similarity index 92%
rename from app/src/main/java/org/literacyapp/model/StudentImageFeature.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/StudentImageFeature.java
index fd2fa89..3cb7171 100644
--- a/app/src/main/java/org/literacyapp/model/StudentImageFeature.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/StudentImageFeature.java
@@ -1,11 +1,11 @@
-package org.literacyapp.model;
+package org.literacyapp.contentprovider.model;
 
 import org.greenrobot.greendao.annotation.Convert;
 import org.greenrobot.greendao.annotation.Entity;
 import org.greenrobot.greendao.annotation.Generated;
 import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.NotNull;
-import org.literacyapp.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
 
 import java.util.Calendar;
 
diff --git a/app/src/main/java/org/literacyapp/model/analytics/AuthenticationEvent.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/analytics/AuthenticationEvent.java
similarity index 93%
rename from app/src/main/java/org/literacyapp/model/analytics/AuthenticationEvent.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/analytics/AuthenticationEvent.java
index d34d23f..d423fca 100644
--- a/app/src/main/java/org/literacyapp/model/analytics/AuthenticationEvent.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/analytics/AuthenticationEvent.java
@@ -1,4 +1,4 @@
-package org.literacyapp.model.analytics;
+package org.literacyapp.contentprovider.model.analytics;
 
 import org.greenrobot.greendao.DaoException;
 import org.greenrobot.greendao.annotation.Convert;
@@ -7,13 +7,13 @@
 import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.NotNull;
 import org.greenrobot.greendao.annotation.ToOne;
-import org.literacyapp.dao.AuthenticationEventDao;
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.dao.DeviceDao;
-import org.literacyapp.dao.StudentDao;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.model.Device;
-import org.literacyapp.model.Student;
+import org.literacyapp.contentprovider.dao.AuthenticationEventDao;
+import org.literacyapp.contentprovider.dao.DaoSession;
+import org.literacyapp.contentprovider.dao.DeviceDao;
+import org.literacyapp.contentprovider.dao.StudentDao;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.model.Device;
+import org.literacyapp.contentprovider.model.Student;
 
 import java.util.Calendar;
 
diff --git a/app/src/main/java/org/literacyapp/model/analytics/StudentImageCollectionEvent.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/analytics/StudentImageCollectionEvent.java
similarity index 92%
rename from app/src/main/java/org/literacyapp/model/analytics/StudentImageCollectionEvent.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/analytics/StudentImageCollectionEvent.java
index 9951b16..00ab428 100644
--- a/app/src/main/java/org/literacyapp/model/analytics/StudentImageCollectionEvent.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/analytics/StudentImageCollectionEvent.java
@@ -1,4 +1,4 @@
-package org.literacyapp.model.analytics;
+package org.literacyapp.contentprovider.model.analytics;
 
 import org.greenrobot.greendao.DaoException;
 import org.greenrobot.greendao.annotation.Convert;
@@ -8,18 +8,18 @@
 import org.greenrobot.greendao.annotation.NotNull;
 import org.greenrobot.greendao.annotation.ToMany;
 import org.greenrobot.greendao.annotation.ToOne;
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.dao.DeviceDao;
-import org.literacyapp.dao.StudentDao;
-import org.literacyapp.dao.StudentImageCollectionEventDao;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.model.Device;
-import org.literacyapp.model.Student;
-import org.literacyapp.model.StudentImage;
+import org.literacyapp.contentprovider.dao.DaoSession;
+import org.literacyapp.contentprovider.dao.DeviceDao;
+import org.literacyapp.contentprovider.dao.StudentDao;
+import org.literacyapp.contentprovider.dao.StudentImageCollectionEventDao;
+import org.literacyapp.contentprovider.dao.StudentImageDao;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.model.Device;
+import org.literacyapp.contentprovider.model.Student;
+import org.literacyapp.contentprovider.model.StudentImage;
 
 import java.util.Calendar;
 import java.util.List;
-import org.literacyapp.dao.StudentImageDao;
 
 /**
  * Based on {@link org.literacyapp.model.gson.analytics.StudentImageCollectionEventGson}
@@ -215,13 +215,6 @@ public void update() {
         myDao.update(this);
     }
 
-    /** called by internal mechanisms, do not call yourself. */
-    @Generated(hash = 76995743)
-    public void __setDaoSession(DaoSession daoSession) {
-        this.daoSession = daoSession;
-        myDao = daoSession != null ? daoSession.getStudentImageCollectionEventDao() : null;
-    }
-
     public String getMeanFeatureVector() {
         return this.meanFeatureVector;
     }
@@ -258,4 +251,11 @@ public List<StudentImage> getStudentImages() {
     public synchronized void resetStudentImages() {
         studentImages = null;
     }
+
+    /** called by internal mechanisms, do not call yourself. */
+    @Generated(hash = 76995743)
+    public void __setDaoSession(DaoSession daoSession) {
+        this.daoSession = daoSession;
+        myDao = daoSession != null ? daoSession.getStudentImageCollectionEventDao() : null;
+    }
 }
diff --git a/app/src/main/java/org/literacyapp/model/content/Allophone.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/Allophone.java
similarity index 88%
rename from app/src/main/java/org/literacyapp/model/content/Allophone.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/Allophone.java
index 98cf8c2..f80a7bb 100644
--- a/app/src/main/java/org/literacyapp/model/content/Allophone.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/Allophone.java
@@ -1,21 +1,21 @@
-package org.literacyapp.model.content;
+package org.literacyapp.contentprovider.model.content;
 
 import org.greenrobot.greendao.annotation.Convert;
 import org.greenrobot.greendao.annotation.Entity;
 import org.greenrobot.greendao.annotation.Generated;
 import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.NotNull;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.dao.converter.ConsonantPlaceConverter;
-import org.literacyapp.dao.converter.ConsonantTypeConverter;
-import org.literacyapp.dao.converter.ConsonantVoicingConverter;
-import org.literacyapp.dao.converter.ContentStatusConverter;
-import org.literacyapp.dao.converter.LipRoundingConverter;
-import org.literacyapp.dao.converter.LocaleConverter;
-import org.literacyapp.dao.converter.SoundTypeConverter;
-import org.literacyapp.dao.converter.VowelFrontnessConverter;
-import org.literacyapp.dao.converter.VowelHeightConverter;
-import org.literacyapp.dao.converter.VowelLengthConverter;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.ConsonantPlaceConverter;
+import org.literacyapp.contentprovider.dao.converter.ConsonantTypeConverter;
+import org.literacyapp.contentprovider.dao.converter.ConsonantVoicingConverter;
+import org.literacyapp.contentprovider.dao.converter.ContentStatusConverter;
+import org.literacyapp.contentprovider.dao.converter.LipRoundingConverter;
+import org.literacyapp.contentprovider.dao.converter.LocaleConverter;
+import org.literacyapp.contentprovider.dao.converter.SoundTypeConverter;
+import org.literacyapp.contentprovider.dao.converter.VowelFrontnessConverter;
+import org.literacyapp.contentprovider.dao.converter.VowelHeightConverter;
+import org.literacyapp.contentprovider.dao.converter.VowelLengthConverter;
 import org.literacyapp.model.enums.Locale;
 import org.literacyapp.model.enums.content.ContentStatus;
 import org.literacyapp.model.enums.content.allophone.ConsonantPlace;
diff --git a/app/src/main/java/org/literacyapp/model/content/Letter.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/Letter.java
similarity index 90%
rename from app/src/main/java/org/literacyapp/model/content/Letter.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/Letter.java
index b2f632a..d7ca18e 100644
--- a/app/src/main/java/org/literacyapp/model/content/Letter.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/Letter.java
@@ -1,13 +1,13 @@
-package org.literacyapp.model.content;
+package org.literacyapp.contentprovider.model.content;
 
 import org.greenrobot.greendao.annotation.Convert;
 import org.greenrobot.greendao.annotation.Entity;
 import org.greenrobot.greendao.annotation.Generated;
 import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.NotNull;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.dao.converter.ContentStatusConverter;
-import org.literacyapp.dao.converter.LocaleConverter;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.ContentStatusConverter;
+import org.literacyapp.contentprovider.dao.converter.LocaleConverter;
 import org.literacyapp.model.enums.Locale;
 import org.literacyapp.model.enums.content.ContentStatus;
 
diff --git a/app/src/main/java/org/literacyapp/model/content/Number.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/Number.java
similarity index 92%
rename from app/src/main/java/org/literacyapp/model/content/Number.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/Number.java
index 6341d25..5ab2664 100644
--- a/app/src/main/java/org/literacyapp/model/content/Number.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/Number.java
@@ -1,4 +1,4 @@
-package org.literacyapp.model.content;
+package org.literacyapp.contentprovider.model.content;
 
 import org.greenrobot.greendao.DaoException;
 import org.greenrobot.greendao.annotation.Convert;
@@ -7,12 +7,12 @@
 import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.NotNull;
 import org.greenrobot.greendao.annotation.ToOne;
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.dao.NumberDao;
-import org.literacyapp.dao.WordDao;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.dao.converter.ContentStatusConverter;
-import org.literacyapp.dao.converter.LocaleConverter;
+import org.literacyapp.contentprovider.dao.DaoSession;
+import org.literacyapp.contentprovider.dao.NumberDao;
+import org.literacyapp.contentprovider.dao.WordDao;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.ContentStatusConverter;
+import org.literacyapp.contentprovider.dao.converter.LocaleConverter;
 import org.literacyapp.model.enums.Locale;
 import org.literacyapp.model.enums.content.ContentStatus;
 
diff --git a/app/src/main/java/org/literacyapp/model/content/Word.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/Word.java
similarity index 91%
rename from app/src/main/java/org/literacyapp/model/content/Word.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/Word.java
index 400e443..82580bd 100644
--- a/app/src/main/java/org/literacyapp/model/content/Word.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/Word.java
@@ -1,13 +1,13 @@
-package org.literacyapp.model.content;
+package org.literacyapp.contentprovider.model.content;
 
 import org.greenrobot.greendao.annotation.Convert;
 import org.greenrobot.greendao.annotation.Entity;
 import org.greenrobot.greendao.annotation.Generated;
 import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.NotNull;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.dao.converter.ContentStatusConverter;
-import org.literacyapp.dao.converter.LocaleConverter;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.ContentStatusConverter;
+import org.literacyapp.contentprovider.dao.converter.LocaleConverter;
 import org.literacyapp.model.enums.Locale;
 import org.literacyapp.model.enums.content.ContentStatus;
 
diff --git a/app/src/main/java/org/literacyapp/model/content/multimedia/Audio.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/Audio.java
similarity index 91%
rename from app/src/main/java/org/literacyapp/model/content/multimedia/Audio.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/Audio.java
index 4afed80..71edd99 100644
--- a/app/src/main/java/org/literacyapp/model/content/multimedia/Audio.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/Audio.java
@@ -1,4 +1,4 @@
-package org.literacyapp.model.content.multimedia;
+package org.literacyapp.contentprovider.model.content.multimedia;
 
 import org.greenrobot.greendao.DaoException;
 import org.greenrobot.greendao.annotation.Convert;
@@ -8,19 +8,19 @@
 import org.greenrobot.greendao.annotation.JoinEntity;
 import org.greenrobot.greendao.annotation.NotNull;
 import org.greenrobot.greendao.annotation.ToMany;
-import org.literacyapp.dao.AudioDao;
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.dao.LetterDao;
-import org.literacyapp.dao.NumberDao;
-import org.literacyapp.dao.WordDao;
-import org.literacyapp.dao.converter.AudioFormatConverter;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.dao.converter.ContentStatusConverter;
-import org.literacyapp.dao.converter.LocaleConverter;
-import org.literacyapp.dao.converter.StringSetConverter;
-import org.literacyapp.model.content.Letter;
-import org.literacyapp.model.content.Number;
-import org.literacyapp.model.content.Word;
+import org.literacyapp.contentprovider.dao.AudioDao;
+import org.literacyapp.contentprovider.dao.DaoSession;
+import org.literacyapp.contentprovider.dao.LetterDao;
+import org.literacyapp.contentprovider.dao.NumberDao;
+import org.literacyapp.contentprovider.dao.WordDao;
+import org.literacyapp.contentprovider.dao.converter.AudioFormatConverter;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.ContentStatusConverter;
+import org.literacyapp.contentprovider.dao.converter.LocaleConverter;
+import org.literacyapp.contentprovider.dao.converter.StringSetConverter;
+import org.literacyapp.contentprovider.model.content.Letter;
+import org.literacyapp.contentprovider.model.content.Number;
+import org.literacyapp.contentprovider.model.content.Word;
 import org.literacyapp.model.enums.Locale;
 import org.literacyapp.model.enums.content.AudioFormat;
 import org.literacyapp.model.enums.content.ContentStatus;
diff --git a/app/src/main/java/org/literacyapp/model/content/multimedia/Image.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/Image.java
similarity index 91%
rename from app/src/main/java/org/literacyapp/model/content/multimedia/Image.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/Image.java
index 2d2b77c..cabb46d 100644
--- a/app/src/main/java/org/literacyapp/model/content/multimedia/Image.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/Image.java
@@ -1,19 +1,26 @@
-package org.literacyapp.model.content.multimedia;
+package org.literacyapp.contentprovider.model.content.multimedia;
 
+import org.greenrobot.greendao.DaoException;
 import org.greenrobot.greendao.annotation.Convert;
 import org.greenrobot.greendao.annotation.Entity;
+import org.greenrobot.greendao.annotation.Generated;
 import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.JoinEntity;
 import org.greenrobot.greendao.annotation.NotNull;
 import org.greenrobot.greendao.annotation.ToMany;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.dao.converter.ContentStatusConverter;
-import org.literacyapp.dao.converter.ImageFormatConverter;
-import org.literacyapp.dao.converter.LocaleConverter;
-import org.literacyapp.dao.converter.StringSetConverter;
-import org.literacyapp.model.content.Letter;
-import org.literacyapp.model.content.Number;
-import org.literacyapp.model.content.Word;
+import org.literacyapp.contentprovider.dao.DaoSession;
+import org.literacyapp.contentprovider.dao.ImageDao;
+import org.literacyapp.contentprovider.dao.LetterDao;
+import org.literacyapp.contentprovider.dao.NumberDao;
+import org.literacyapp.contentprovider.dao.WordDao;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.ContentStatusConverter;
+import org.literacyapp.contentprovider.dao.converter.ImageFormatConverter;
+import org.literacyapp.contentprovider.dao.converter.LocaleConverter;
+import org.literacyapp.contentprovider.dao.converter.StringSetConverter;
+import org.literacyapp.contentprovider.model.content.Letter;
+import org.literacyapp.contentprovider.model.content.Number;
+import org.literacyapp.contentprovider.model.content.Word;
 import org.literacyapp.model.enums.Locale;
 import org.literacyapp.model.enums.content.ContentStatus;
 import org.literacyapp.model.enums.content.ImageFormat;
@@ -23,13 +30,6 @@
 import java.util.Calendar;
 import java.util.List;
 import java.util.Set;
-import org.greenrobot.greendao.annotation.Generated;
-import org.greenrobot.greendao.DaoException;
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.dao.WordDao;
-import org.literacyapp.dao.NumberDao;
-import org.literacyapp.dao.LetterDao;
-import org.literacyapp.dao.ImageDao;
 
 /**
  * Based on {@link org.literacyapp.model.gson.content.multimedia.ImageGson}
diff --git a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinAudiosWithLetters.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinAudiosWithLetters.java
similarity index 93%
rename from app/src/main/java/org/literacyapp/model/content/multimedia/JoinAudiosWithLetters.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinAudiosWithLetters.java
index 1912680..38444bb 100644
--- a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinAudiosWithLetters.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinAudiosWithLetters.java
@@ -1,8 +1,8 @@
-package org.literacyapp.model.content.multimedia;
+package org.literacyapp.contentprovider.model.content.multimedia;
 
 import org.greenrobot.greendao.annotation.Entity;
-import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.Generated;
+import org.greenrobot.greendao.annotation.Id;
 
 @Entity
 public class JoinAudiosWithLetters {
diff --git a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinAudiosWithNumbers.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinAudiosWithNumbers.java
similarity index 93%
rename from app/src/main/java/org/literacyapp/model/content/multimedia/JoinAudiosWithNumbers.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinAudiosWithNumbers.java
index b8af569..687cabe 100644
--- a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinAudiosWithNumbers.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinAudiosWithNumbers.java
@@ -1,8 +1,8 @@
-package org.literacyapp.model.content.multimedia;
+package org.literacyapp.contentprovider.model.content.multimedia;
 
 import org.greenrobot.greendao.annotation.Entity;
-import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.Generated;
+import org.greenrobot.greendao.annotation.Id;
 
 @Entity
 public class JoinAudiosWithNumbers {
diff --git a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinAudiosWithWords.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinAudiosWithWords.java
similarity index 93%
rename from app/src/main/java/org/literacyapp/model/content/multimedia/JoinAudiosWithWords.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinAudiosWithWords.java
index 9ef0509..e2df7e7 100644
--- a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinAudiosWithWords.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinAudiosWithWords.java
@@ -1,8 +1,8 @@
-package org.literacyapp.model.content.multimedia;
+package org.literacyapp.contentprovider.model.content.multimedia;
 
 import org.greenrobot.greendao.annotation.Entity;
-import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.Generated;
+import org.greenrobot.greendao.annotation.Id;
 
 @Entity
 public class JoinAudiosWithWords {
diff --git a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinImagesWithLetters.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinImagesWithLetters.java
similarity index 93%
rename from app/src/main/java/org/literacyapp/model/content/multimedia/JoinImagesWithLetters.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinImagesWithLetters.java
index fd50ee2..4182be2 100644
--- a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinImagesWithLetters.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinImagesWithLetters.java
@@ -1,8 +1,8 @@
-package org.literacyapp.model.content.multimedia;
+package org.literacyapp.contentprovider.model.content.multimedia;
 
 import org.greenrobot.greendao.annotation.Entity;
-import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.Generated;
+import org.greenrobot.greendao.annotation.Id;
 
 @Entity
 public class JoinImagesWithLetters {
diff --git a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinImagesWithNumbers.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinImagesWithNumbers.java
similarity index 93%
rename from app/src/main/java/org/literacyapp/model/content/multimedia/JoinImagesWithNumbers.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinImagesWithNumbers.java
index ed82741..6886f41 100644
--- a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinImagesWithNumbers.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinImagesWithNumbers.java
@@ -1,8 +1,8 @@
-package org.literacyapp.model.content.multimedia;
+package org.literacyapp.contentprovider.model.content.multimedia;
 
 import org.greenrobot.greendao.annotation.Entity;
-import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.Generated;
+import org.greenrobot.greendao.annotation.Id;
 
 @Entity
 public class JoinImagesWithNumbers {
diff --git a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinImagesWithWords.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinImagesWithWords.java
similarity index 93%
rename from app/src/main/java/org/literacyapp/model/content/multimedia/JoinImagesWithWords.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinImagesWithWords.java
index 24d02d4..1ce286e 100644
--- a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinImagesWithWords.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinImagesWithWords.java
@@ -1,8 +1,8 @@
-package org.literacyapp.model.content.multimedia;
+package org.literacyapp.contentprovider.model.content.multimedia;
 
 import org.greenrobot.greendao.annotation.Entity;
-import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.Generated;
+import org.greenrobot.greendao.annotation.Id;
 
 @Entity
 public class JoinImagesWithWords {
diff --git a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinVideosWithLetters.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinVideosWithLetters.java
similarity index 93%
rename from app/src/main/java/org/literacyapp/model/content/multimedia/JoinVideosWithLetters.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinVideosWithLetters.java
index 72c05bc..2f801fb 100644
--- a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinVideosWithLetters.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinVideosWithLetters.java
@@ -1,8 +1,8 @@
-package org.literacyapp.model.content.multimedia;
+package org.literacyapp.contentprovider.model.content.multimedia;
 
 import org.greenrobot.greendao.annotation.Entity;
-import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.Generated;
+import org.greenrobot.greendao.annotation.Id;
 
 @Entity
 public class JoinVideosWithLetters {
diff --git a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinVideosWithNumbers.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinVideosWithNumbers.java
similarity index 93%
rename from app/src/main/java/org/literacyapp/model/content/multimedia/JoinVideosWithNumbers.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinVideosWithNumbers.java
index 032e195..13b96ec 100644
--- a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinVideosWithNumbers.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinVideosWithNumbers.java
@@ -1,8 +1,8 @@
-package org.literacyapp.model.content.multimedia;
+package org.literacyapp.contentprovider.model.content.multimedia;
 
 import org.greenrobot.greendao.annotation.Entity;
-import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.Generated;
+import org.greenrobot.greendao.annotation.Id;
 
 @Entity
 public class JoinVideosWithNumbers {
diff --git a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinVideosWithWords.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinVideosWithWords.java
similarity index 93%
rename from app/src/main/java/org/literacyapp/model/content/multimedia/JoinVideosWithWords.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinVideosWithWords.java
index 3bf9240..693845b 100644
--- a/app/src/main/java/org/literacyapp/model/content/multimedia/JoinVideosWithWords.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/JoinVideosWithWords.java
@@ -1,8 +1,8 @@
-package org.literacyapp.model.content.multimedia;
+package org.literacyapp.contentprovider.model.content.multimedia;
 
 import org.greenrobot.greendao.annotation.Entity;
-import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.Generated;
+import org.greenrobot.greendao.annotation.Id;
 
 @Entity
 public class JoinVideosWithWords {
diff --git a/app/src/main/java/org/literacyapp/model/content/multimedia/Video.java b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/Video.java
similarity index 91%
rename from app/src/main/java/org/literacyapp/model/content/multimedia/Video.java
rename to contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/Video.java
index d9e882e..834dc66 100644
--- a/app/src/main/java/org/literacyapp/model/content/multimedia/Video.java
+++ b/contentprovider/src/main/java/org/literacyapp/contentprovider/model/content/multimedia/Video.java
@@ -1,4 +1,4 @@
-package org.literacyapp.model.content.multimedia;
+package org.literacyapp.contentprovider.model.content.multimedia;
 
 import org.greenrobot.greendao.DaoException;
 import org.greenrobot.greendao.annotation.Convert;
@@ -8,19 +8,19 @@
 import org.greenrobot.greendao.annotation.JoinEntity;
 import org.greenrobot.greendao.annotation.NotNull;
 import org.greenrobot.greendao.annotation.ToMany;
-import org.literacyapp.dao.DaoSession;
-import org.literacyapp.dao.LetterDao;
-import org.literacyapp.dao.NumberDao;
-import org.literacyapp.dao.VideoDao;
-import org.literacyapp.dao.WordDao;
-import org.literacyapp.dao.converter.CalendarConverter;
-import org.literacyapp.dao.converter.ContentStatusConverter;
-import org.literacyapp.dao.converter.LocaleConverter;
-import org.literacyapp.dao.converter.StringSetConverter;
-import org.literacyapp.dao.converter.VideoFormatConverter;
-import org.literacyapp.model.content.Letter;
-import org.literacyapp.model.content.Number;
-import org.literacyapp.model.content.Word;
+import org.literacyapp.contentprovider.dao.DaoSession;
+import org.literacyapp.contentprovider.dao.LetterDao;
+import org.literacyapp.contentprovider.dao.NumberDao;
+import org.literacyapp.contentprovider.dao.VideoDao;
+import org.literacyapp.contentprovider.dao.WordDao;
+import org.literacyapp.contentprovider.dao.converter.CalendarConverter;
+import org.literacyapp.contentprovider.dao.converter.ContentStatusConverter;
+import org.literacyapp.contentprovider.dao.converter.LocaleConverter;
+import org.literacyapp.contentprovider.dao.converter.StringSetConverter;
+import org.literacyapp.contentprovider.dao.converter.VideoFormatConverter;
+import org.literacyapp.contentprovider.model.content.Letter;
+import org.literacyapp.contentprovider.model.content.Number;
+import org.literacyapp.contentprovider.model.content.Word;
 import org.literacyapp.model.enums.Locale;
 import org.literacyapp.model.enums.content.ContentStatus;
 import org.literacyapp.model.enums.content.LiteracySkill;

From 87f6d2a77f26333fa78a6c3c68935bd628e7414e Mon Sep 17 00:00:00 2001
From: Jo Grimstad <jo@literacyapp.org>
Date: Thu, 23 Feb 2017 00:08:45 +0300
Subject: [PATCH 3/3] #366 Added lintOptions

---
 contentprovider/build.gradle | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/contentprovider/build.gradle b/contentprovider/build.gradle
index 686f2e4..a67b2eb 100644
--- a/contentprovider/build.gradle
+++ b/contentprovider/build.gradle
@@ -20,6 +20,10 @@ android {
             minifyEnabled false
         }
     }
+
+    lintOptions {
+        abortOnError false
+    }
 }
 
 greendao {