You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@fineract.apache.org by GitBox <gi...@apache.org> on 2018/06/04 15:52:00 UTC

[GitHub] mohak1712 closed pull request #4: feat: added review screen for create customer

mohak1712 closed pull request #4: feat: added review screen for create customer
URL: https://github.com/apache/fineract-cn-mobile/pull/4
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..0ec7715
Binary files /dev/null and b/.DS_Store differ
diff --git a/app/build.gradle b/app/build.gradle
index 2f62571..884ac3a 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,4 +1,6 @@
 apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
 apply plugin: 'io.fabric'
 apply from: '../config/quality/quality.gradle'
 
@@ -37,6 +39,9 @@ android {
         test {
             java.srcDir commonTestDir
         }
+        main {
+            java.srcDir commonTestDir
+        }
     }
 
     // Always show the result of every unit test, even if it passes.
@@ -54,6 +59,11 @@ android {
     packagingOptions {
         exclude 'META-INF/rxjava.properties'
     }
+
+    //for @parcelize extension
+    androidExtensions {
+        experimental = true
+    }
 }
 
 dependencies {
@@ -70,6 +80,8 @@ dependencies {
     implementation "com.android.support.test.espresso:espresso-idling-resource:$rootProject.espressoVersion"
     implementation "com.android.support:support-annotations:$rootProject.supportLibraryVersion"
 
+    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion"
+
     // Rx Dependencies
     implementation "io.reactivex.rxjava2:rxjava:$rootProject.rxjavaVersion"
     implementation "io.reactivex.rxjava2:rxandroid:$rootProject.rxandroidVersion"
@@ -163,4 +175,7 @@ dependencies {
         configurations.androidTestCompile.dependencies.each { androidTestCompileDependency ->
             configurations.androidTestCompile.exclude module: "${compileDependency.getName()}"
         }
-    }
\ No newline at end of file
+    }
+repositories {
+    mavenCentral()
+}
\ No newline at end of file
diff --git a/app/src/commonTest/java/org/apache/fineract/FakeRemoteDataSource.java b/app/src/commonTest/java/org/apache/fineract/FakeRemoteDataSource.java
index 4f92f80..87c3451 100644
--- a/app/src/commonTest/java/org/apache/fineract/FakeRemoteDataSource.java
+++ b/app/src/commonTest/java/org/apache/fineract/FakeRemoteDataSource.java
@@ -1,5 +1,7 @@
 package org.apache.fineract;
 
+import org.apache.fineract.data.models.customer.Customer;
+
 /**
  * FakeRemoteDataSource is reading the local json files into the java object using gson.
  * Created by Rajan Maurya on 25/6/17.
@@ -8,4 +10,8 @@
 
     private static TestDataFactory testDataFactory = new TestDataFactory();
 
+    public static Customer getCustomer() {
+        return testDataFactory.getObjectTypePojo(Customer.class,
+                FakeJsonName.CUSTOMER);
+    }
 }
diff --git a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerIndividualLending.java b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerIndividualLending.java
index 882b2bd..a3ba78e 100644
--- a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerIndividualLending.java
+++ b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerIndividualLending.java
@@ -1,5 +1,6 @@
 package org.apache.fineract.data.datamanager;
 
+import org.apache.fineract.FakeRemoteDataSource;
 import org.apache.fineract.data.local.PreferencesHelper;
 import org.apache.fineract.data.models.payment.PlannedPaymentPage;
 import org.apache.fineract.data.remote.BaseApiManager;
@@ -8,6 +9,8 @@
 import javax.inject.Singleton;
 
 import io.reactivex.Observable;
+import io.reactivex.ObservableSource;
+import io.reactivex.functions.Function;
 
 /**
  * @author Rajan Maurya
@@ -31,6 +34,16 @@ public DataManagerIndividualLending(BaseApiManager baseApiManager,
             String caseIdentifier, Integer pageIndex, Integer size, String initialDisbursalDate) {
         return authenticatedObservableApi(baseApiManager
                 .getIndividualLendingService().getPaymentScheduleForCase(
-                        productIdentifier, caseIdentifier, pageIndex, size, initialDisbursalDate));
+                        productIdentifier, caseIdentifier, pageIndex, size, initialDisbursalDate))
+                .onErrorResumeNext(
+                        new Function<Throwable, ObservableSource<PlannedPaymentPage>>() {
+                            @Override
+                            public ObservableSource<PlannedPaymentPage> apply(
+                                    Throwable throwable)
+                                    throws Exception {
+                                return Observable.just(
+                                        FakeRemoteDataSource.getPlannedPaymentPage());
+                            }
+                        });
     }
 }
diff --git a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerLoans.java b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerLoans.java
index c699e11..e315d80 100644
--- a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerLoans.java
+++ b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerLoans.java
@@ -1,5 +1,6 @@
 package org.apache.fineract.data.datamanager;
 
+import org.apache.fineract.FakeRemoteDataSource;
 import org.apache.fineract.data.local.PreferencesHelper;
 import org.apache.fineract.data.models.loan.LoanAccount;
 import org.apache.fineract.data.models.loan.LoanAccountPage;
@@ -11,6 +12,8 @@
 
 import io.reactivex.Completable;
 import io.reactivex.Observable;
+import io.reactivex.ObservableSource;
+import io.reactivex.functions.Function;
 
 /**
  * @author Rajan Maurya
@@ -33,13 +36,29 @@ public DataManagerLoans(BaseApiManager baseApiManager, PreferencesHelper prefere
     public Observable<LoanAccountPage> fetchCustomerLoanAccounts(
             String customeridentifier, Integer pageIndex, Integer size) {
         return authenticatedObservableApi(baseApiManager.getLoanApi()
-                .fetchCustomerLoanAccounts(customeridentifier, pageIndex, size));
+                .fetchCustomerLoanAccounts(customeridentifier, pageIndex, size))
+                .onErrorResumeNext(
+                        new Function<Throwable, ObservableSource<LoanAccountPage>>() {
+                            @Override
+                            public ObservableSource<LoanAccountPage> apply(
+                                    Throwable throwable) throws Exception {
+                                return Observable.just(FakeRemoteDataSource.getloanAccountPage());
+                            }
+                        });
     }
 
     public Observable<LoanAccount> fetchCustomerLoanDetails(
             String productIdentifier, String caseIdentifier) {
         return authenticatedObservableApi(baseApiManager.getLoanApi()
-                .fetchCustomerLoanDetails(productIdentifier, caseIdentifier));
+                .fetchCustomerLoanDetails(productIdentifier, caseIdentifier))
+                .onErrorResumeNext(
+                        new Function<Throwable, ObservableSource<LoanAccount>>() {
+                            @Override
+                            public ObservableSource<LoanAccount> apply(
+                                    Throwable throwable) throws Exception {
+                                return Observable.just(FakeRemoteDataSource.getloanAccount());
+                            }
+                        });
     }
 
     public Observable<ProductPage> getProducts(Integer pageIndex, Integer size) {
diff --git a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerRoles.java b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerRoles.java
index 8de52aa..60df5c0 100644
--- a/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerRoles.java
+++ b/app/src/main/java/org/apache/fineract/data/datamanager/DataManagerRoles.java
@@ -1,5 +1,6 @@
 package org.apache.fineract.data.datamanager;
 
+import org.apache.fineract.FakeRemoteDataSource;
 import org.apache.fineract.data.local.PreferencesHelper;
 import org.apache.fineract.data.models.rolesandpermission.Role;
 import org.apache.fineract.data.remote.BaseApiManager;
@@ -10,6 +11,8 @@
 import javax.inject.Singleton;
 
 import io.reactivex.Observable;
+import io.reactivex.ObservableSource;
+import io.reactivex.functions.Function;
 
 /**
  * @author Rajan Maurya
@@ -31,6 +34,14 @@ public DataManagerRoles(BaseApiManager baseApiManager,
 
     public Observable<List<Role>> getRoles() {
         return authenticatedObservableApi(
-                baseApiManager.getRolesAndPermissionsService().getRoles());
+                baseApiManager.getRolesAndPermissionsService().getRoles())
+                .onErrorResumeNext(
+                        new Function<Throwable, ObservableSource<List<Role>>>() {
+                            @Override
+                            public ObservableSource<List<Role>> apply(Throwable throwable)
+                                    throws Exception {
+                                return Observable.just(FakeRemoteDataSource.getRoles());
+                            }
+                        });
     }
 }
diff --git a/app/src/main/java/org/apache/fineract/data/models/Authentication.java b/app/src/main/java/org/apache/fineract/data/models/Authentication.java
deleted file mode 100644
index f06582c..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/Authentication.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package org.apache.fineract.data.models;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import com.google.gson.annotations.SerializedName;
-
-/**
- * @author Rajan Maurya
- *         On 17/06/17.
- */
-public class Authentication implements Parcelable {
-
-    @SerializedName("tokenType")
-    String tokenType;
-
-    @SerializedName("accessToken")
-    String accessToken;
-
-    @SerializedName("accessTokenExpiration")
-    String accessTokenExpiration;
-
-    @SerializedName("refreshTokenExpiration")
-    String refreshTokenExpiration;
-
-    @SerializedName("passwordExpiration")
-    String passwordExpiration;
-
-    public String getTokenType() {
-        return tokenType;
-    }
-
-    public void setTokenType(String tokenType) {
-        this.tokenType = tokenType;
-    }
-
-    public String getAccessToken() {
-        return accessToken;
-    }
-
-    public void setAccessToken(String accessToken) {
-        this.accessToken = accessToken;
-    }
-
-    public String getAccessTokenExpiration() {
-        return accessTokenExpiration;
-    }
-
-    public void setAccessTokenExpiration(String accessTokenExpiration) {
-        this.accessTokenExpiration = accessTokenExpiration;
-    }
-
-    public String getRefreshTokenExpiration() {
-        return refreshTokenExpiration;
-    }
-
-    public void setRefreshTokenExpiration(String refreshTokenExpiration) {
-        this.refreshTokenExpiration = refreshTokenExpiration;
-    }
-
-    public String getPasswordExpiration() {
-        return passwordExpiration;
-    }
-
-    public void setPasswordExpiration(String passwordExpiration) {
-        this.passwordExpiration = passwordExpiration;
-    }
-
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(this.tokenType);
-        dest.writeString(this.accessToken);
-        dest.writeString(this.accessTokenExpiration);
-        dest.writeString(this.refreshTokenExpiration);
-        dest.writeString(this.passwordExpiration);
-    }
-
-    public Authentication() {
-    }
-
-    protected Authentication(Parcel in) {
-        this.tokenType = in.readString();
-        this.accessToken = in.readString();
-        this.accessTokenExpiration = in.readString();
-        this.refreshTokenExpiration = in.readString();
-        this.passwordExpiration = in.readString();
-    }
-
-    public static final Parcelable.Creator<Authentication> CREATOR =
-            new Parcelable.Creator<Authentication>() {
-                @Override
-                public Authentication createFromParcel(Parcel source) {
-                    return new Authentication(source);
-                }
-
-                @Override
-                public Authentication[] newArray(int size) {
-                    return new Authentication[size];
-                }
-            };
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/Authentication.kt b/app/src/main/java/org/apache/fineract/data/models/Authentication.kt
new file mode 100644
index 0000000..ba8e36a
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/Authentication.kt
@@ -0,0 +1,19 @@
+package org.apache.fineract.data.models
+
+import android.os.Parcelable
+
+import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
+
+/**
+ * @author Rajan Maurya
+ * On 17/06/17.
+ */
+@Parcelize
+data class Authentication(
+    @SerializedName("tokenType") var tokenType: String,
+    @SerializedName("accessToken") var accessToken: String,
+    @SerializedName("accessTokenExpiration") var accessTokenExpiration: String,
+    @SerializedName("refreshTokenExpiration") var refreshTokenExpiration: String,
+    @SerializedName("passwordExpiration") var passwordExpiration: String
+) : Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/State.java b/app/src/main/java/org/apache/fineract/data/models/State.java
deleted file mode 100644
index 23429e8..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/State.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.apache.fineract.data.models;
-
-/**
- * @author Rajan Maurya
- *         On 07/07/17.
- */
-public class State {
-    public static final String ACTIVE = "ACTIVE";
-    public static final String APPROVED = "APPROVED";
-    public static final String CLOSED = "CLOSED";
-    public static final String LOCKED = "LOCKED";
-    public static final String PENDING = "PENDING";
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/State.kt b/app/src/main/java/org/apache/fineract/data/models/State.kt
new file mode 100644
index 0000000..6455d45
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/State.kt
@@ -0,0 +1,13 @@
+package org.apache.fineract.data.models
+
+/**
+ * @author Rajan Maurya
+ * On 07/07/17.
+ */
+object State {
+    val ACTIVE = "ACTIVE"
+    val APPROVED = "APPROVED"
+    val CLOSED = "CLOSED"
+    val LOCKED = "LOCKED"
+    val PENDING = "PENDING"
+}
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/Address.java b/app/src/main/java/org/apache/fineract/data/models/customer/Address.java
deleted file mode 100644
index 7f618cc..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/customer/Address.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package org.apache.fineract.data.models.customer;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public final class Address implements Parcelable {
-    private String street;
-    private String city;
-    private String region;
-    private String postalCode;
-    private String countryCode;
-    private String country;
-
-    public Address() {
-        super();
-    }
-
-    public String getStreet() {
-        return this.street;
-    }
-
-    public void setStreet(final String street) {
-        this.street = street;
-    }
-
-    public String getCity() {
-        return this.city;
-    }
-
-    public void setCity(final String city) {
-        this.city = city;
-    }
-
-    public String getRegion() {
-        return this.region;
-    }
-
-    public void setRegion(final String region) {
-        this.region = region;
-    }
-
-    public String getPostalCode() {
-        return this.postalCode;
-    }
-
-    public void setPostalCode(final String postalCode) {
-        this.postalCode = postalCode;
-    }
-
-    public String getCountryCode() {
-        return this.countryCode;
-    }
-
-    public void setCountryCode(final String countryCode) {
-        this.countryCode = countryCode;
-    }
-
-    public String getCountry() {
-        return this.country;
-    }
-
-    public void setCountry(final String country) {
-        this.country = country;
-    }
-
-    @Override
-    public String toString() {
-        return "Address{" +
-                "street='" + street + '\'' +
-                ", city='" + city + '\'' +
-                ", region='" + region + '\'' +
-                ", postalCode='" + postalCode + '\'' +
-                ", countryCode='" + countryCode + '\'' +
-                ", country='" + country + '\'' +
-                '}';
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(this.street);
-        dest.writeString(this.city);
-        dest.writeString(this.region);
-        dest.writeString(this.postalCode);
-        dest.writeString(this.countryCode);
-        dest.writeString(this.country);
-    }
-
-    protected Address(Parcel in) {
-        this.street = in.readString();
-        this.city = in.readString();
-        this.region = in.readString();
-        this.postalCode = in.readString();
-        this.countryCode = in.readString();
-        this.country = in.readString();
-    }
-
-    public static final Parcelable.Creator<Address> CREATOR = new Parcelable.Creator<Address>() {
-        @Override
-        public Address createFromParcel(Parcel source) {
-            return new Address(source);
-        }
-
-        @Override
-        public Address[] newArray(int size) {
-            return new Address[size];
-        }
-    };
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/Address.kt b/app/src/main/java/org/apache/fineract/data/models/customer/Address.kt
new file mode 100644
index 0000000..f7ec279
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/customer/Address.kt
@@ -0,0 +1,15 @@
+package org.apache.fineract.data.models.customer
+
+import android.os.Parcelable
+import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
+
+@Parcelize
+data class Address(
+    @SerializedName("street") var street: String? = null,
+    @SerializedName("city") var city: String? = null,
+    @SerializedName("region") var region: String? = null,
+    @SerializedName("postalCode") var postalCode: String? = null,
+    @SerializedName("countryCode") var countryCode: String? = null,
+    @SerializedName("country") var country: String? = null
+) : Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/Command.java b/app/src/main/java/org/apache/fineract/data/models/customer/Command.java
deleted file mode 100644
index 6faf9bb..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/customer/Command.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.apache.fineract.data.models.customer;
-
-import com.google.gson.annotations.SerializedName;
-
-public class Command {
-
-    public enum Action {
-
-        @SerializedName("ACTIVATE")
-        ACTIVATE,
-
-        @SerializedName("LOCK")
-        LOCK,
-
-        @SerializedName("UNLOCK")
-        UNLOCK,
-
-        @SerializedName("CLOSE")
-        CLOSE,
-
-        @SerializedName("REOPEN")
-        REOPEN
-    }
-
-    private Action action;
-    private String comment;
-    private String createdOn;
-    private String createdBy;
-
-    public Command() {
-        super();
-    }
-
-    public Action getAction() {
-        return this.action;
-    }
-
-    public void setAction(Action action) {
-        this.action = action;
-    }
-
-    public String getComment() {
-        return this.comment;
-    }
-
-    public void setComment(final String comment) {
-        this.comment = comment;
-    }
-
-    public String getCreatedOn() {
-        return this.createdOn;
-    }
-
-    public void setCreatedOn(final String createdOn) {
-        this.createdOn = createdOn;
-    }
-
-    public String getCreatedBy() {
-        return this.createdBy;
-    }
-
-    public void setCreatedBy(final String createdBy) {
-        this.createdBy = createdBy;
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/Command.kt b/app/src/main/java/org/apache/fineract/data/models/customer/Command.kt
new file mode 100644
index 0000000..15a836d
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/customer/Command.kt
@@ -0,0 +1,28 @@
+package org.apache.fineract.data.models.customer
+
+import com.google.gson.annotations.SerializedName
+
+data class Command(
+    @SerializedName("action") var action: Action? = null,
+    @SerializedName("comment") var comment: String? = null,
+    @SerializedName("createdOn") var createdOn: String? = null,
+    @SerializedName("createdBy") var createdBy: String? = null
+) {
+    enum class Action {
+
+        @SerializedName("ACTIVATE")
+        ACTIVATE,
+
+        @SerializedName("LOCK")
+        LOCK,
+
+        @SerializedName("UNLOCK")
+        UNLOCK,
+
+        @SerializedName("CLOSE")
+        CLOSE,
+
+        @SerializedName("REOPEN")
+        REOPEN
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/ContactDetail.java b/app/src/main/java/org/apache/fineract/data/models/customer/ContactDetail.java
deleted file mode 100644
index 0cf53d8..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/customer/ContactDetail.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package org.apache.fineract.data.models.customer;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import com.google.gson.annotations.SerializedName;
-
-public final class ContactDetail implements Parcelable {
-
-    public enum Type {
-        @SerializedName("EMAIL")
-        EMAIL,
-
-        @SerializedName("PHONE")
-        PHONE,
-
-        @SerializedName("MOBILE")
-        MOBILE
-    }
-
-    public enum Group {
-
-        @SerializedName("BUSINESS")
-        BUSINESS,
-
-        @SerializedName("PRIVATE")
-        PRIVATE
-    }
-
-    private Type type;
-    private Group group;
-    private String value;
-    private Integer preferenceLevel;
-    private Boolean validated;
-
-    public ContactDetail() {
-        super();
-    }
-
-    public Type getType() {
-        return this.type;
-    }
-
-    public void setType(final Type type) {
-        this.type = type;
-    }
-
-    public String getValue() {
-        return this.value;
-    }
-
-    public String getGroup() {
-        return this.group.name();
-    }
-
-    public void setGroup(final Group group) {
-        this.group = group;
-    }
-
-    public void setValue(final String value) {
-        this.value = value;
-    }
-
-    public Boolean getValidated() {
-        return this.validated;
-    }
-
-    public void setValidated(final Boolean validated) {
-        this.validated = validated;
-    }
-
-    public Integer getPreferenceLevel() {
-        return this.preferenceLevel;
-    }
-
-    public void setPreferenceLevel(final Integer preferenceLevel) {
-        this.preferenceLevel = preferenceLevel;
-    }
-
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeInt(this.type == null ? -1 : this.type.ordinal());
-        dest.writeInt(this.group == null ? -1 : this.group.ordinal());
-        dest.writeString(this.value);
-        dest.writeValue(this.preferenceLevel);
-        dest.writeValue(this.validated);
-    }
-
-    protected ContactDetail(Parcel in) {
-        int tmpType = in.readInt();
-        this.type = tmpType == -1 ? null : Type.values()[tmpType];
-        int tmpGroup = in.readInt();
-        this.group = tmpGroup == -1 ? null : Group.values()[tmpGroup];
-        this.value = in.readString();
-        this.preferenceLevel = (Integer) in.readValue(Integer.class.getClassLoader());
-        this.validated = (Boolean) in.readValue(Boolean.class.getClassLoader());
-    }
-
-    public static final Parcelable.Creator<ContactDetail> CREATOR =
-            new Parcelable.Creator<ContactDetail>() {
-                @Override
-                public ContactDetail createFromParcel(Parcel source) {
-                    return new ContactDetail(source);
-                }
-
-                @Override
-                public ContactDetail[] newArray(int size) {
-                    return new ContactDetail[size];
-                }
-            };
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/ContactDetail.kt b/app/src/main/java/org/apache/fineract/data/models/customer/ContactDetail.kt
new file mode 100644
index 0000000..ad1b597
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/customer/ContactDetail.kt
@@ -0,0 +1,37 @@
+package org.apache.fineract.data.models.customer
+
+import android.os.Parcelable
+
+import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
+
+@Parcelize
+data class ContactDetail(
+    @SerializedName("type") var type: Type? = null,
+    @SerializedName("value") var value: String? = null,
+    @SerializedName("preferenceLevel") var preferenceLevel: Int? = null,
+    @SerializedName("validated") var validated: Boolean? = null,
+    @SerializedName("group") var group: Group? = null
+) : Parcelable {
+
+    enum class Type {
+        @SerializedName("EMAIL")
+        EMAIL,
+
+        @SerializedName("PHONE")
+        PHONE,
+
+        @SerializedName("MOBILE")
+        MOBILE
+    }
+
+    enum class Group {
+
+        @SerializedName("BUSINESS")
+        BUSINESS,
+
+        @SerializedName("PRIVATE")
+        PRIVATE
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/Country.java b/app/src/main/java/org/apache/fineract/data/models/customer/Country.java
deleted file mode 100644
index d8548db..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/customer/Country.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.apache.fineract.data.models.customer;
-
-import com.google.gson.annotations.SerializedName;
-
-/**
- * @author Rajan Maurya
- *         On 26/07/17.
- */
-
-public class Country {
-
-    @SerializedName("translations")
-    Translations translations;
-
-    @SerializedName("name")
-    String name;
-
-    @SerializedName("alpha2Code")
-    String alpha2Code;
-
-    public Translations getTranslations() {
-        return translations;
-    }
-
-    public void setTranslations(Translations translations) {
-        this.translations = translations;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getAlphaCode() {
-        return alpha2Code;
-    }
-
-    public void setAlphaCode(String alphaCode) {
-        this.alpha2Code = alphaCode;
-    }
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/Country.kt b/app/src/main/java/org/apache/fineract/data/models/customer/Country.kt
new file mode 100644
index 0000000..e431d20
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/customer/Country.kt
@@ -0,0 +1,14 @@
+package org.apache.fineract.data.models.customer
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * @author Rajan Maurya
+ * On 26/07/17.
+ */
+
+data class Country(
+    @SerializedName("translations") var translations: Translations,
+    @SerializedName("name") var name: String,
+    @SerializedName("alpha2Code") var alphaCode: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/Customer.java b/app/src/main/java/org/apache/fineract/data/models/customer/Customer.java
deleted file mode 100644
index d0ee00b..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/customer/Customer.java
+++ /dev/null
@@ -1,266 +0,0 @@
-package org.apache.fineract.data.models.customer;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import com.google.gson.annotations.SerializedName;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public final class Customer implements Parcelable {
-
-    public enum Type {
-
-        @SerializedName("PERSON")
-        PERSON,
-
-        @SerializedName("BUSINESS")
-        BUSINESS
-    }
-
-    public enum State {
-
-        @SerializedName("PENDING")
-        PENDING,
-
-        @SerializedName("ACTIVE")
-        ACTIVE,
-
-        @SerializedName("LOCKED")
-        LOCKED,
-
-        @SerializedName("CLOSED")
-        CLOSED
-    }
-
-    private String identifier;
-    private String type;
-    private String givenName;
-    private String middleName;
-    private String surname;
-    private DateOfBirth dateOfBirth;
-    private Boolean member;
-    private String accountBeneficiary;
-    private String referenceCustomer;
-    private String assignedOffice;
-    private String assignedEmployee;
-    private Address address;
-    private List<ContactDetail> contactDetails;
-    private State currentState;
-    private String createdBy;
-    private String createdOn;
-    private String lastModifiedBy;
-    private String lastModifiedOn;
-
-    public Customer() {
-        super();
-    }
-
-    public String getIdentifier() {
-        return this.identifier;
-    }
-
-    public void setIdentifier(final String identifier) {
-        this.identifier = identifier;
-    }
-
-    public String getGivenName() {
-        return this.givenName;
-    }
-
-    public void setGivenName(final String givenName) {
-        this.givenName = givenName;
-    }
-
-    public String getMiddleName() {
-        return this.middleName;
-    }
-
-    public void setMiddleName(final String middleName) {
-        this.middleName = middleName;
-    }
-
-    public String getSurname() {
-        return this.surname;
-    }
-
-    public void setSurname(final String surname) {
-        this.surname = surname;
-    }
-
-    public DateOfBirth getDateOfBirth() {
-        return this.dateOfBirth;
-    }
-
-    public void setDateOfBirth(final DateOfBirth dateOfBirth) {
-        this.dateOfBirth = dateOfBirth;
-    }
-
-    public Boolean getMember() {
-        return this.member;
-    }
-
-    public void setMember(final Boolean member) {
-        this.member = member;
-    }
-
-    public String getAccountBeneficiary() {
-        return this.accountBeneficiary;
-    }
-
-    public void setAccountBeneficiary(final String accountBeneficiary) {
-        this.accountBeneficiary = accountBeneficiary;
-    }
-
-    public String getReferenceCustomer() {
-        return this.referenceCustomer;
-    }
-
-    public void setReferenceCustomer(final String referenceCustomer) {
-        this.referenceCustomer = referenceCustomer;
-    }
-
-    public String getAssignedOffice() {
-        return this.assignedOffice;
-    }
-
-    public void setAssignedOffice(final String assignedOffice) {
-        this.assignedOffice = assignedOffice;
-    }
-
-    public String getAssignedEmployee() {
-        return this.assignedEmployee;
-    }
-
-    public void setAssignedEmployee(final String assignedEmployee) {
-        this.assignedEmployee = assignedEmployee;
-    }
-
-    public Address getAddress() {
-        return this.address;
-    }
-
-    public void setAddress(final Address address) {
-        this.address = address;
-    }
-
-    public List<ContactDetail> getContactDetails() {
-        return this.contactDetails;
-    }
-
-    public void setContactDetails(final List<ContactDetail> contactDetails) {
-        this.contactDetails = contactDetails;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public State getCurrentState() {
-        return this.currentState;
-    }
-
-    public void setCurrentState(final State currentState) {
-        this.currentState = currentState;
-    }
-
-    public String getCreatedBy() {
-        return this.createdBy;
-    }
-
-    public void setCreatedBy(final String createdBy) {
-        this.createdBy = createdBy;
-    }
-
-    public String getCreatedOn() {
-        return this.createdOn;
-    }
-
-    public void setCreatedOn(final String createdOn) {
-        this.createdOn = createdOn;
-    }
-
-    public String getLastModifiedBy() {
-        return this.lastModifiedBy;
-    }
-
-    public void setLastModifiedBy(final String lastModifiedBy) {
-        this.lastModifiedBy = lastModifiedBy;
-    }
-
-    public String getLastModifiedOn() {
-        return this.lastModifiedOn;
-    }
-
-    public void setLastModifiedOn(final String lastModifiedOn) {
-        this.lastModifiedOn = lastModifiedOn;
-    }
-
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(this.identifier);
-        dest.writeString(this.type);
-        dest.writeString(this.givenName);
-        dest.writeString(this.middleName);
-        dest.writeString(this.surname);
-        dest.writeParcelable(this.dateOfBirth, flags);
-        dest.writeValue(this.member);
-        dest.writeString(this.accountBeneficiary);
-        dest.writeString(this.referenceCustomer);
-        dest.writeString(this.assignedOffice);
-        dest.writeString(this.assignedEmployee);
-        dest.writeParcelable(this.address, flags);
-        dest.writeList(this.contactDetails);
-        dest.writeInt(this.currentState == null ? -1 : this.currentState.ordinal());
-        dest.writeString(this.createdBy);
-        dest.writeString(this.createdOn);
-        dest.writeString(this.lastModifiedBy);
-        dest.writeString(this.lastModifiedOn);
-    }
-
-    protected Customer(Parcel in) {
-        this.identifier = in.readString();
-        this.type = in.readString();
-        this.givenName = in.readString();
-        this.middleName = in.readString();
-        this.surname = in.readString();
-        this.dateOfBirth = in.readParcelable(DateOfBirth.class.getClassLoader());
-        this.member = (Boolean) in.readValue(Boolean.class.getClassLoader());
-        this.accountBeneficiary = in.readString();
-        this.referenceCustomer = in.readString();
-        this.assignedOffice = in.readString();
-        this.assignedEmployee = in.readString();
-        this.address = in.readParcelable(Address.class.getClassLoader());
-        this.contactDetails = new ArrayList<>();
-        in.readList(this.contactDetails, ContactDetail.class.getClassLoader());
-        int tmpCurrentState = in.readInt();
-        this.currentState = tmpCurrentState == -1 ? null : State.values()[tmpCurrentState];
-        this.createdBy = in.readString();
-        this.createdOn = in.readString();
-        this.lastModifiedBy = in.readString();
-        this.lastModifiedOn = in.readString();
-    }
-
-    public static final Parcelable.Creator<Customer> CREATOR = new Parcelable.Creator<Customer>() {
-        @Override
-        public Customer createFromParcel(Parcel source) {
-            return new Customer(source);
-        }
-
-        @Override
-        public Customer[] newArray(int size) {
-            return new Customer[size];
-        }
-    };
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/Customer.kt b/app/src/main/java/org/apache/fineract/data/models/customer/Customer.kt
new file mode 100644
index 0000000..f4637c7
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/customer/Customer.kt
@@ -0,0 +1,53 @@
+package org.apache.fineract.data.models.customer
+
+import android.os.Parcelable
+
+import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
+
+@Parcelize
+data class Customer(
+    @SerializedName("identifier") var identifier: String? = null,
+    @SerializedName("type") var type: String? = null,
+    @SerializedName("givenName") var givenName: String? = null,
+    @SerializedName("middleName") var middleName: String? = null,
+    @SerializedName("surname") var surname: String? = null,
+    @SerializedName("dateOfBirth") var dateOfBirth: DateOfBirth? = null,
+    @SerializedName("member") var member: Boolean? = null,
+    @SerializedName("accountBeneficiary") var accountBeneficiary: String? = null,
+    @SerializedName("referenceCustomer") var referenceCustomer: String? = null,
+    @SerializedName("assignedOffice") var assignedOffice: String? = null,
+    @SerializedName("assignedEmployee") var assignedEmployee: String? = null,
+    @SerializedName("address") var address: Address? = null,
+    @SerializedName("contactDetails") var contactDetails: List<ContactDetail>? = null,
+    @SerializedName("currentState") var currentState: State? = null,
+    @SerializedName("createdBy") var createdBy: String? = null,
+    @SerializedName("createdOn") var createdOn: String? = null,
+    @SerializedName("lastModifiedBy") var lastModifiedBy: String? = null,
+    @SerializedName("lastModifiedOn") var lastModifiedOn: String? = null
+) : Parcelable {
+
+    enum class Type {
+
+        @SerializedName("PERSON")
+        PERSON,
+
+        @SerializedName("BUSINESS")
+        BUSINESS
+    }
+
+    enum class State {
+
+        @SerializedName("PENDING")
+        PENDING,
+
+        @SerializedName("ACTIVE")
+        ACTIVE,
+
+        @SerializedName("LOCKED")
+        LOCKED,
+
+        @SerializedName("CLOSED")
+        CLOSED
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/CustomerPage.java b/app/src/main/java/org/apache/fineract/data/models/customer/CustomerPage.java
deleted file mode 100644
index ac1f79c..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/customer/CustomerPage.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.apache.fineract.data.models.customer;
-
-import java.util.List;
-
-public class CustomerPage {
-
-    private List<Customer> customers;
-    private Integer totalPages;
-    private Long totalElements;
-
-    public CustomerPage() {
-        super();
-    }
-
-    public List<Customer> getCustomers() {
-        return this.customers;
-    }
-
-    public void setCustomers(final List<Customer> customers) {
-        this.customers = customers;
-    }
-
-    public Integer getTotalPages() {
-        return this.totalPages;
-    }
-
-    public void setTotalPages(final Integer totalPages) {
-        this.totalPages = totalPages;
-    }
-
-    public Long getTotalElements() {
-        return this.totalElements;
-    }
-
-    public void setTotalElements(final Long totalElements) {
-        this.totalElements = totalElements;
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/CustomerPage.kt b/app/src/main/java/org/apache/fineract/data/models/customer/CustomerPage.kt
new file mode 100644
index 0000000..4064f74
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/customer/CustomerPage.kt
@@ -0,0 +1,9 @@
+package org.apache.fineract.data.models.customer
+
+import com.google.gson.annotations.SerializedName
+
+data class CustomerPage(
+    @SerializedName("customers") var customers: List<Customer>? = null,
+    @SerializedName("totalPages") var totalPages: Int? = null,
+    @SerializedName("totalElements") var totalElements: Long? = null
+)
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/DateOfBirth.java b/app/src/main/java/org/apache/fineract/data/models/customer/DateOfBirth.java
deleted file mode 100644
index 6d4a872..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/customer/DateOfBirth.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.apache.fineract.data.models.customer;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public final class DateOfBirth implements Parcelable {
-
-    private Integer year;
-    private Integer month;
-    private Integer day;
-
-    public DateOfBirth() {
-        super();
-    }
-
-    public Integer getYear() {
-        return this.year;
-    }
-
-    public void setYear(final Integer year) {
-        this.year = year;
-    }
-
-    public Integer getMonth() {
-        return this.month;
-    }
-
-    public void setMonth(final Integer month) {
-        this.month = month;
-    }
-
-    public Integer getDay() {
-        return this.day;
-    }
-
-    public void setDay(final Integer day) {
-        this.day = day;
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeValue(this.year);
-        dest.writeValue(this.month);
-        dest.writeValue(this.day);
-    }
-
-    protected DateOfBirth(Parcel in) {
-        this.year = (Integer) in.readValue(Integer.class.getClassLoader());
-        this.month = (Integer) in.readValue(Integer.class.getClassLoader());
-        this.day = (Integer) in.readValue(Integer.class.getClassLoader());
-    }
-
-    public static final Parcelable.Creator<DateOfBirth> CREATOR =
-            new Parcelable.Creator<DateOfBirth>() {
-                @Override
-                public DateOfBirth createFromParcel(Parcel source) {
-                    return new DateOfBirth(source);
-                }
-
-                @Override
-                public DateOfBirth[] newArray(int size) {
-                    return new DateOfBirth[size];
-                }
-            };
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/DateOfBirth.kt b/app/src/main/java/org/apache/fineract/data/models/customer/DateOfBirth.kt
new file mode 100644
index 0000000..767c2bd
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/customer/DateOfBirth.kt
@@ -0,0 +1,12 @@
+package org.apache.fineract.data.models.customer
+
+import android.os.Parcelable
+import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
+
+@Parcelize
+data class DateOfBirth(
+    @SerializedName("year") var year: Int? = null,
+    @SerializedName("month")  var month: Int? = null,
+    @SerializedName("day") var day: Int? = null
+) : Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/Translations.java b/app/src/main/java/org/apache/fineract/data/models/customer/Translations.java
deleted file mode 100644
index 8f387db..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/customer/Translations.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.apache.fineract.data.models.customer;
-
-/**
- * @author Rajan Maurya
- *         On 26/07/17.
- */
-public class Translations {
-    String br;
-    String En;
-    String From;
-    String Is;
-    String Fr;
-    String ja;
-    String It;
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/Translations.kt b/app/src/main/java/org/apache/fineract/data/models/customer/Translations.kt
new file mode 100644
index 0000000..c533ac9
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/customer/Translations.kt
@@ -0,0 +1,15 @@
+package org.apache.fineract.data.models.customer
+
+/**
+ * @author Rajan Maurya
+ * On 26/07/17.
+ */
+class Translations {
+    internal var br: String? = null
+    internal var En: String? = null
+    internal var From: String? = null
+    internal var Is: String? = null
+    internal var Fr: String? = null
+    internal var ja: String? = null
+    internal var It: String? = null
+}
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/identification/ExpirationDate.java b/app/src/main/java/org/apache/fineract/data/models/customer/identification/ExpirationDate.java
deleted file mode 100644
index 5604ba6..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/customer/identification/ExpirationDate.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.apache.fineract.data.models.customer.identification;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-/**
- * @author Rajan Maurya
- *         On 31/07/17.
- */
-public class ExpirationDate implements Parcelable {
-
-    private Integer year;
-    private Integer month;
-    private Integer day;
-
-    public ExpirationDate() {
-        super();
-    }
-
-    public Integer getYear() {
-        return this.year;
-    }
-
-    public void setYear(final Integer year) {
-        this.year = year;
-    }
-
-    public Integer getMonth() {
-        return this.month;
-    }
-
-    public void setMonth(final Integer month) {
-        this.month = month;
-    }
-
-    public Integer getDay() {
-        return this.day;
-    }
-
-    public void setDay(final Integer day) {
-        this.day = day;
-    }
-
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeValue(this.year);
-        dest.writeValue(this.month);
-        dest.writeValue(this.day);
-    }
-
-    protected ExpirationDate(Parcel in) {
-        this.year = (Integer) in.readValue(Integer.class.getClassLoader());
-        this.month = (Integer) in.readValue(Integer.class.getClassLoader());
-        this.day = (Integer) in.readValue(Integer.class.getClassLoader());
-    }
-
-    public static final Parcelable.Creator<ExpirationDate> CREATOR =
-            new Parcelable.Creator<ExpirationDate>() {
-                @Override
-                public ExpirationDate createFromParcel(Parcel source) {
-                    return new ExpirationDate(source);
-                }
-
-                @Override
-                public ExpirationDate[] newArray(int size) {
-                    return new ExpirationDate[size];
-                }
-            };
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/identification/ExpirationDate.kt b/app/src/main/java/org/apache/fineract/data/models/customer/identification/ExpirationDate.kt
new file mode 100644
index 0000000..f7fcb73
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/customer/identification/ExpirationDate.kt
@@ -0,0 +1,16 @@
+package org.apache.fineract.data.models.customer.identification
+
+import android.os.Parcelable
+import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
+
+/**
+ * @author Rajan Maurya
+ * On 31/07/17.
+ */
+@Parcelize
+data class ExpirationDate(
+    @SerializedName("year") var year: Int? = null,
+    @SerializedName("month") var month: Int? = null,
+    @SerializedName("day") var day: Int? = null
+) : Parcelable
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/identification/Identification.java b/app/src/main/java/org/apache/fineract/data/models/customer/identification/Identification.java
deleted file mode 100644
index 4816f59..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/customer/identification/Identification.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package org.apache.fineract.data.models.customer.identification;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import com.google.gson.annotations.SerializedName;
-
-/**
- * @author Rajan Maurya
- *         On 31/07/17.
- */
-public class Identification implements Parcelable {
-
-    @SerializedName("type")
-    String type;
-
-    @SerializedName("number")
-    String number;
-
-    @SerializedName("expirationDate")
-    ExpirationDate expirationDate;
-
-    @SerializedName("issuer")
-    String issuer;
-
-    @SerializedName("createdBy")
-    String createdBy;
-
-    @SerializedName("createdOn")
-    String createdOn;
-
-    @SerializedName("lastModifiedBy")
-    String lastModifiedBy;
-
-    @SerializedName("lastModifiedOn")
-    String lastModifiedOn;
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public String getNumber() {
-        return number;
-    }
-
-    public void setNumber(String number) {
-        this.number = number;
-    }
-
-    public ExpirationDate getExpirationDate() {
-        return expirationDate;
-    }
-
-    public void setExpirationDate(
-            ExpirationDate expirationDate) {
-        this.expirationDate = expirationDate;
-    }
-
-    public String getIssuer() {
-        return issuer;
-    }
-
-    public void setIssuer(String issuer) {
-        this.issuer = issuer;
-    }
-
-    public String getCreatedBy() {
-        return createdBy;
-    }
-
-    public void setCreatedBy(String createdBy) {
-        this.createdBy = createdBy;
-    }
-
-    public String getCreatedOn() {
-        return createdOn;
-    }
-
-    public void setCreatedOn(String createdOn) {
-        this.createdOn = createdOn;
-    }
-
-    public String getLastModifiedBy() {
-        return lastModifiedBy;
-    }
-
-    public void setLastModifiedBy(String lastModifiedBy) {
-        this.lastModifiedBy = lastModifiedBy;
-    }
-
-    public String getLastModifiedOn() {
-        return lastModifiedOn;
-    }
-
-    public void setLastModifiedOn(String lastModifiedOn) {
-        this.lastModifiedOn = lastModifiedOn;
-    }
-
-    public static Creator<Identification> getCREATOR() {
-        return CREATOR;
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(this.type);
-        dest.writeString(this.number);
-        dest.writeParcelable(this.expirationDate, flags);
-        dest.writeString(this.issuer);
-        dest.writeString(this.createdBy);
-        dest.writeString(this.createdOn);
-        dest.writeString(this.lastModifiedBy);
-        dest.writeString(this.lastModifiedOn);
-    }
-
-    public Identification() {
-    }
-
-    protected Identification(Parcel in) {
-        this.type = in.readString();
-        this.number = in.readString();
-        this.expirationDate = in.readParcelable(ExpirationDate.class.getClassLoader());
-        this.issuer = in.readString();
-        this.createdBy = in.readString();
-        this.createdOn = in.readString();
-        this.lastModifiedBy = in.readString();
-        this.lastModifiedOn = in.readString();
-    }
-
-    public static final Parcelable.Creator<Identification> CREATOR =
-            new Parcelable.Creator<Identification>() {
-                @Override
-                public Identification createFromParcel(Parcel source) {
-                    return new Identification(source);
-                }
-
-                @Override
-                public Identification[] newArray(int size) {
-                    return new Identification[size];
-                }
-            };
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/identification/Identification.kt b/app/src/main/java/org/apache/fineract/data/models/customer/identification/Identification.kt
new file mode 100644
index 0000000..24776fd
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/customer/identification/Identification.kt
@@ -0,0 +1,22 @@
+package org.apache.fineract.data.models.customer.identification
+
+import android.os.Parcelable
+
+import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
+
+/**
+ * @author Rajan Maurya
+ * On 31/07/17.
+ */
+@Parcelize
+data class Identification(
+    @SerializedName("type") var type: String? = "",
+    @SerializedName("number") var number: String? = "",
+    @SerializedName("expirationDate") var expirationDate: ExpirationDate? = null,
+    @SerializedName("issuer") var issuer: String? = "",
+    @SerializedName("createdBy") var createdBy: String? = "",
+    @SerializedName("createdOn") var createdOn: String? = "",
+    @SerializedName("lastModifiedBy") var lastModifiedBy: String? = "",
+    @SerializedName("lastModifiedOn") var lastModifiedOn: String? = ""
+) : Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/identification/ScanCard.java b/app/src/main/java/org/apache/fineract/data/models/customer/identification/ScanCard.java
deleted file mode 100644
index c8617b3..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/customer/identification/ScanCard.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.apache.fineract.data.models.customer.identification;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import com.google.gson.annotations.SerializedName;
-
-/**
- * @author Rajan Maurya
- *         On 01/08/17.
- */
-
-public class ScanCard implements Parcelable {
-
-    @SerializedName("description")
-    String description;
-
-    @SerializedName("identifier")
-    String identifier;
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public String getIdentifier() {
-        return identifier;
-    }
-
-    public void setIdentifier(String identifier) {
-        this.identifier = identifier;
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(this.description);
-        dest.writeString(this.identifier);
-    }
-
-    public ScanCard() {
-    }
-
-    protected ScanCard(Parcel in) {
-        this.description = in.readString();
-        this.identifier = in.readString();
-    }
-
-    public static final Parcelable.Creator<ScanCard> CREATOR = new Parcelable.Creator<ScanCard>() {
-        @Override
-        public ScanCard createFromParcel(Parcel source) {
-            return new ScanCard(source);
-        }
-
-        @Override
-        public ScanCard[] newArray(int size) {
-            return new ScanCard[size];
-        }
-    };
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/customer/identification/ScanCard.kt b/app/src/main/java/org/apache/fineract/data/models/customer/identification/ScanCard.kt
new file mode 100644
index 0000000..12f8f82
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/customer/identification/ScanCard.kt
@@ -0,0 +1,16 @@
+package org.apache.fineract.data.models.customer.identification
+
+import android.os.Parcelable
+
+import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
+
+/**
+ * @author Rajan Maurya
+ * On 01/08/17.
+ */
+@Parcelize
+data class ScanCard(
+    @SerializedName("description") var description: String,
+    @SerializedName("identifier") var identifier: String
+) : Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/deposit/Charge.java b/app/src/main/java/org/apache/fineract/data/models/deposit/Charge.java
deleted file mode 100644
index b457e48..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/deposit/Charge.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package org.apache.fineract.data.models.deposit;
-
-public class Charge {
-
-    private String actionIdentifier;
-    private String incomeAccountIdentifier;
-    private String name;
-    private String description;
-    private Boolean proportional;
-    private Double amount;
-
-    public Charge() {
-        super();
-    }
-
-    public String getActionIdentifier() {
-        return this.actionIdentifier;
-    }
-
-    public void setActionIdentifier(final String actionIdentifier) {
-        this.actionIdentifier = actionIdentifier;
-    }
-
-    public String getIncomeAccountIdentifier() {
-        return this.incomeAccountIdentifier;
-    }
-
-    public void setIncomeAccountIdentifier(final String incomeAccountIdentifier) {
-        this.incomeAccountIdentifier = incomeAccountIdentifier;
-    }
-
-    public String getName() {
-        return this.name;
-    }
-
-    public void setName(final String name) {
-        this.name = name;
-    }
-
-    public String getDescription() {
-        return this.description;
-    }
-
-    public void setDescription(final String description) {
-        this.description = description;
-    }
-
-    public Boolean getProportional() {
-        return this.proportional;
-    }
-
-    public void setProportional(final Boolean proportional) {
-        this.proportional = proportional;
-    }
-
-    public Double getAmount() {
-        return this.amount;
-    }
-
-    public void setAmount(final Double amount) {
-        this.amount = amount;
-    }
-
-    @Override
-    public boolean equals(final Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        final Charge charge = (Charge) o;
-
-        return name != null ? name.equals(charge.name) : charge.name == null;
-    }
-
-    @Override
-    public int hashCode() {
-        return name != null ? name.hashCode() : 0;
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/deposit/Charge.kt b/app/src/main/java/org/apache/fineract/data/models/deposit/Charge.kt
new file mode 100644
index 0000000..35aa779
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/deposit/Charge.kt
@@ -0,0 +1,12 @@
+package org.apache.fineract.data.models.deposit
+
+import com.google.gson.annotations.SerializedName
+
+data class Charge(
+    @SerializedName("actionIdentifier") var actionIdentifier: String? = null,
+    @SerializedName("incomeAccountIdentifier") var incomeAccountIdentifier: String? = null,
+    @SerializedName("name") var name: String? = null,
+    @SerializedName("description") var description: String? = null,
+    @SerializedName("proportional") var proportional: Boolean? = null,
+    @SerializedName("amount") var amount: Double? = null
+)
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/deposit/Currency.java b/app/src/main/java/org/apache/fineract/data/models/deposit/Currency.java
deleted file mode 100644
index 376c751..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/deposit/Currency.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.apache.fineract.data.models.deposit;
-
-public class Currency {
-
-    private String code;
-    private String name;
-    private String sign;
-    private Integer scale;
-
-    public Currency() {
-        super();
-    }
-
-    public String getCode() {
-        return this.code;
-    }
-
-    public void setCode(final String code) {
-        this.code = code;
-    }
-
-    public String getName() {
-        return this.name;
-    }
-
-    public void setName(final String name) {
-        this.name = name;
-    }
-
-    public String getSign() {
-        return this.sign;
-    }
-
-    public void setSign(final String sign) {
-        this.sign = sign;
-    }
-
-    public Integer getScale() {
-        return this.scale;
-    }
-
-    public void setScale(final Integer scale) {
-        this.scale = scale;
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/deposit/Currency.kt b/app/src/main/java/org/apache/fineract/data/models/deposit/Currency.kt
new file mode 100644
index 0000000..35ddb5e
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/deposit/Currency.kt
@@ -0,0 +1,10 @@
+package org.apache.fineract.data.models.deposit
+
+import com.google.gson.annotations.SerializedName
+
+data class Currency(
+    @SerializedName("code") var code: String? = null,
+    @SerializedName("name") var name: String? = null,
+    @SerializedName("sign") var sign: String? = null,
+    @SerializedName("scale") var scale: Int? = null
+)
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/deposit/DepositAccount.java b/app/src/main/java/org/apache/fineract/data/models/deposit/DepositAccount.java
deleted file mode 100644
index 8b8cb47..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/deposit/DepositAccount.java
+++ /dev/null
@@ -1,133 +0,0 @@
-package org.apache.fineract.data.models.deposit;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import com.google.gson.annotations.SerializedName;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author Rajan Maurya
- *         On 07/07/17.
- */
-public class DepositAccount implements Parcelable {
-
-    private String customerIdentifier;
-    private String productIdentifier;
-    private String accountIdentifier;
-    private List<String> beneficiaries = new ArrayList<>();
-    private State state;
-    private Double balance;
-
-    public enum State {
-
-        @SerializedName("CREATED")
-        CREATED,
-
-        @SerializedName("PENDING")
-        PENDING,
-
-        @SerializedName("APPROVED")
-        APPROVED,
-
-        @SerializedName("ACTIVE")
-        ACTIVE,
-
-        @SerializedName("LOCKED")
-        LOCKED,
-
-        @SerializedName("CLOSED")
-        CLOSED
-    }
-
-    public String getCustomerIdentifier() {
-        return customerIdentifier;
-    }
-
-    public void setCustomerIdentifier(String customerIdentifier) {
-        this.customerIdentifier = customerIdentifier;
-    }
-
-    public String getProductIdentifier() {
-        return productIdentifier;
-    }
-
-    public void setProductIdentifier(String productIdentifier) {
-        this.productIdentifier = productIdentifier;
-    }
-
-    public String getAccountIdentifier() {
-        return accountIdentifier;
-    }
-
-    public void setAccountIdentifier(String accountIdentifier) {
-        this.accountIdentifier = accountIdentifier;
-    }
-
-    public List<String> getBeneficiaries() {
-        return beneficiaries;
-    }
-
-    public void setBeneficiaries(List<String> beneficiaries) {
-        this.beneficiaries = beneficiaries;
-    }
-
-    public State getState() {
-        return state;
-    }
-
-    public void setState(State state) {
-        this.state = state;
-    }
-
-    public Double getBalance() {
-        return balance;
-    }
-
-    public void setBalance(Double balance) {
-        this.balance = balance;
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(this.customerIdentifier);
-        dest.writeString(this.productIdentifier);
-        dest.writeString(this.accountIdentifier);
-        dest.writeStringList(this.beneficiaries);
-        dest.writeInt(this.state == null ? -1 : this.state.ordinal());
-        dest.writeValue(this.balance);
-    }
-
-    public DepositAccount() {
-    }
-
-    protected DepositAccount(Parcel in) {
-        this.customerIdentifier = in.readString();
-        this.productIdentifier = in.readString();
-        this.accountIdentifier = in.readString();
-        this.beneficiaries = in.createStringArrayList();
-        int tmpState = in.readInt();
-        this.state = tmpState == -1 ? null : State.values()[tmpState];
-        this.balance = (Double) in.readValue(Double.class.getClassLoader());
-    }
-
-    public static final Parcelable.Creator<DepositAccount> CREATOR =
-            new Parcelable.Creator<DepositAccount>() {
-                @Override
-                public DepositAccount createFromParcel(Parcel source) {
-                    return new DepositAccount(source);
-                }
-
-                @Override
-                public DepositAccount[] newArray(int size) {
-                    return new DepositAccount[size];
-                }
-            };
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/deposit/DepositAccount.kt b/app/src/main/java/org/apache/fineract/data/models/deposit/DepositAccount.kt
new file mode 100644
index 0000000..f566571
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/deposit/DepositAccount.kt
@@ -0,0 +1,45 @@
+package org.apache.fineract.data.models.deposit
+
+import android.os.Parcelable
+
+import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
+
+import java.util.ArrayList
+
+/**
+ * @author Rajan Maurya
+ * On 07/07/17.
+ */
+@Parcelize
+data class DepositAccount(
+    @SerializedName("customerIdentifier") var customerIdentifier: String? = null,
+    @SerializedName("productIdentifier") var productIdentifier: String? = null,
+    @SerializedName("accountIdentifier") var accountIdentifier: String? = null,
+    @SerializedName("beneficiaries") var beneficiaries: List<String> = ArrayList(),
+    @SerializedName("state") var state: State? = null,
+    @SerializedName("balance") var balance: Double? = null
+) : Parcelable {
+
+    enum class State {
+
+        @SerializedName("CREATED")
+        CREATED,
+
+        @SerializedName("PENDING")
+        PENDING,
+
+        @SerializedName("APPROVED")
+        APPROVED,
+
+        @SerializedName("ACTIVE")
+        ACTIVE,
+
+        @SerializedName("LOCKED")
+        LOCKED,
+
+        @SerializedName("CLOSED")
+        CLOSED
+    }
+
+}
diff --git a/app/src/main/java/org/apache/fineract/data/models/deposit/InterestPayable.java b/app/src/main/java/org/apache/fineract/data/models/deposit/InterestPayable.java
deleted file mode 100644
index 0f18d80..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/deposit/InterestPayable.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.apache.fineract.data.models.deposit;
-
-public enum InterestPayable {
-
-    MATURITY,
-
-    ANNUALLY,
-
-    MONTHLY,
-
-    QUARTERLY
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/deposit/InterestPayable.kt b/app/src/main/java/org/apache/fineract/data/models/deposit/InterestPayable.kt
new file mode 100644
index 0000000..28f6988
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/deposit/InterestPayable.kt
@@ -0,0 +1,13 @@
+package org.apache.fineract.data.models.deposit
+
+enum class InterestPayable {
+
+    MATURITY,
+
+    ANNUALLY,
+
+    MONTHLY,
+
+    QUARTERLY
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/deposit/ProductDefinition.java b/app/src/main/java/org/apache/fineract/data/models/deposit/ProductDefinition.java
deleted file mode 100644
index eae6030..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/deposit/ProductDefinition.java
+++ /dev/null
@@ -1,146 +0,0 @@
-package org.apache.fineract.data.models.deposit;
-
-import java.util.List;
-
-public class ProductDefinition {
-
-    private Type type;
-    private String identifier;
-    private String name;
-    private String description;
-    private Currency currency;
-    private Double minimumBalance;
-    private String equityLedgerIdentifier;
-    private String cashAccountIdentifier;
-    private String expenseAccountIdentifier;
-    private String accrueAccountIdentifier;
-    private Double interest;
-    private Term term;
-    private List<Charge> charges;
-    private Boolean flexible;
-    private Boolean active;
-
-    public ProductDefinition() {
-        super();
-    }
-
-    public String getType() {
-        return this.type.name();
-    }
-
-    public void setType(final String type) {
-        this.type = Type.valueOf(type);
-    }
-
-    public String getIdentifier() {
-        return this.identifier;
-    }
-
-    public void setIdentifier(final String identifier) {
-        this.identifier = identifier;
-    }
-
-    public String getName() {
-        return this.name;
-    }
-
-    public void setName(final String name) {
-        this.name = name;
-    }
-
-    public String getDescription() {
-        return this.description;
-    }
-
-    public void setDescription(final String description) {
-        this.description = description;
-    }
-
-    public Currency getCurrency() {
-        return this.currency;
-    }
-
-    public void setCurrency(final Currency currency) {
-        this.currency = currency;
-    }
-
-    public Double getMinimumBalance() {
-        return this.minimumBalance;
-    }
-
-    public void setMinimumBalance(final Double minimumBalance) {
-        this.minimumBalance = minimumBalance;
-    }
-
-    public String getEquityLedgerIdentifier() {
-        return this.equityLedgerIdentifier;
-    }
-
-    public void setEquityLedgerIdentifier(final String equityLedgerIdentifier) {
-        this.equityLedgerIdentifier = equityLedgerIdentifier;
-    }
-
-    public String getCashAccountIdentifier() {
-        return this.cashAccountIdentifier;
-    }
-
-    public void setCashAccountIdentifier(final String cashAccountIdentifier) {
-        this.cashAccountIdentifier = cashAccountIdentifier;
-    }
-
-    public String getExpenseAccountIdentifier() {
-        return this.expenseAccountIdentifier;
-    }
-
-    public void setExpenseAccountIdentifier(final String expenseAccountIdentifier) {
-        this.expenseAccountIdentifier = expenseAccountIdentifier;
-    }
-
-    public String getAccrueAccountIdentifier() {
-        return this.accrueAccountIdentifier;
-    }
-
-    public void setAccrueAccountIdentifier(final String accrueAccountIdentifier) {
-        this.accrueAccountIdentifier = accrueAccountIdentifier;
-    }
-
-    public Double getInterest() {
-        return this.interest;
-    }
-
-    public void setInterest(final Double interest) {
-        this.interest = interest;
-    }
-
-    public Term getTerm() {
-        return this.term;
-    }
-
-    public void setTerm(final Term term) {
-        this.term = term;
-    }
-
-    public List<Charge> getCharges() {
-        return this.charges;
-    }
-
-    public void setCharges(final List<Charge> charges) {
-        this.charges = charges;
-    }
-
-    public Boolean getFlexible() {
-        return this.flexible;
-    }
-
-    public void setFlexible(final Boolean flexible) {
-        this.flexible = flexible;
-    }
-
-    public Boolean getActive() {
-        return this.active;
-    }
-
-    public void setActive(final Boolean active) {
-        this.active = active;
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/deposit/ProductDefinition.kt b/app/src/main/java/org/apache/fineract/data/models/deposit/ProductDefinition.kt
new file mode 100644
index 0000000..b6f1390
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/deposit/ProductDefinition.kt
@@ -0,0 +1,30 @@
+package org.apache.fineract.data.models.deposit
+
+import com.google.gson.annotations.SerializedName
+
+data class ProductDefinition(
+    @SerializedName("identifier") var identifier: String? = null,
+    @SerializedName("name") var name: String? = null,
+    @SerializedName("description") var description: String? = null,
+    @SerializedName("currency") var currency: Currency? = null,
+    @SerializedName("minimumBalance") var minimumBalance: Double? = null,
+    @SerializedName("equityLedgerIdentifier") var equityLedgerIdentifier: String? = null,
+    @SerializedName("cashAccountIdentifier") var cashAccountIdentifier: String? = null,
+    @SerializedName("expenseAccountIdentifier") var expenseAccountIdentifier: String? = null,
+    @SerializedName("accrueAccountIdentifier") var accrueAccountIdentifier: String? = null,
+    @SerializedName("interest") var interest: Double? = null,
+    @SerializedName("term") var term: Term? = null,
+    @SerializedName("charges") var charges: List<Charge>? = null,
+    @SerializedName("flexible") var flexible: Boolean? = null,
+    @SerializedName("active") var active: Boolean? = null
+) {
+    private var type: Type? = null
+
+    fun getType(): String {
+        return this.type!!.name
+    }
+
+    fun setType(type: String) {
+        this.type = Type.valueOf(type)
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/deposit/Term.java b/app/src/main/java/org/apache/fineract/data/models/deposit/Term.java
deleted file mode 100644
index 45d93b3..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/deposit/Term.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.apache.fineract.data.models.deposit;
-
-
-public class Term {
-
-    private Integer period;
-    private TimeUnit timeUnit;
-    private InterestPayable interestPayable;
-
-    public Term() {
-        super();
-    }
-
-    public Integer getPeriod() {
-        return this.period;
-    }
-
-    public void setPeriod(final Integer period) {
-        this.period = period;
-    }
-
-    public String getTimeUnit() {
-        if (this.timeUnit != null) {
-            return this.timeUnit.name();
-        } else {
-            return null;
-        }
-    }
-
-    public void setTimeUnit(final String timeUnit) {
-        if (timeUnit != null) {
-            this.timeUnit = TimeUnit.valueOf(timeUnit);
-        }
-    }
-
-    public String getInterestPayable() {
-        return this.interestPayable.name();
-    }
-
-    public void setInterestPayable(final String interestPayable) {
-        this.interestPayable = InterestPayable.valueOf(interestPayable);
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/deposit/Term.kt b/app/src/main/java/org/apache/fineract/data/models/deposit/Term.kt
new file mode 100644
index 0000000..82d6f6b
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/deposit/Term.kt
@@ -0,0 +1,34 @@
+package org.apache.fineract.data.models.deposit
+
+import com.google.gson.annotations.SerializedName
+
+
+data class Term(
+    @SerializedName("period") var period: Int? = null
+) {
+
+    private var timeUnit: TimeUnit? = null
+    private var interestPayable: InterestPayable? = null
+
+    fun getTimeUnit(): String? {
+        return if (this.timeUnit != null) {
+            this.timeUnit!!.name
+        } else {
+            null
+        }
+    }
+
+    fun setTimeUnit(timeUnit: String?) {
+        if (timeUnit != null) {
+            this.timeUnit = TimeUnit.valueOf(timeUnit)
+        }
+    }
+
+    fun getInterestPayable(): String {
+        return this.interestPayable!!.name
+    }
+
+    fun setInterestPayable(interestPayable: String) {
+        this.interestPayable = InterestPayable.valueOf(interestPayable)
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/deposit/TimeUnit.java b/app/src/main/java/org/apache/fineract/data/models/deposit/TimeUnit.java
deleted file mode 100644
index 1e6b74c..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/deposit/TimeUnit.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.apache.fineract.data.models.deposit;
-
-public enum TimeUnit {
-
-    MONTH,
-
-    YEAR
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/deposit/TimeUnit.kt b/app/src/main/java/org/apache/fineract/data/models/deposit/TimeUnit.kt
new file mode 100644
index 0000000..65b306c
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/deposit/TimeUnit.kt
@@ -0,0 +1,9 @@
+package org.apache.fineract.data.models.deposit
+
+enum class TimeUnit {
+
+    MONTH,
+
+    YEAR
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/deposit/Type.java b/app/src/main/java/org/apache/fineract/data/models/deposit/Type.java
deleted file mode 100644
index c4ac5c1..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/deposit/Type.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.apache.fineract.data.models.deposit;
-
-public enum Type {
-
-    CHECKING,
-
-    SAVINGS,
-
-    SHARE
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/deposit/Type.kt b/app/src/main/java/org/apache/fineract/data/models/deposit/Type.kt
new file mode 100644
index 0000000..106af3e
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/deposit/Type.kt
@@ -0,0 +1,11 @@
+package org.apache.fineract.data.models.deposit
+
+enum class Type {
+
+    CHECKING,
+
+    SAVINGS,
+
+    SHARE
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/error/MifosError.java b/app/src/main/java/org/apache/fineract/data/models/error/MifosError.java
deleted file mode 100644
index 2348548..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/error/MifosError.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package org.apache.fineract.data.models.error;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import com.google.gson.annotations.SerializedName;
-
-/**
- * @author Rajan Maurya
- *         On 18/06/17.
- */
-
-public class MifosError implements Parcelable {
-
-    @SerializedName("timestamp")
-    String timestamp;
-
-    @SerializedName("status")
-    Integer status;
-
-    @SerializedName("error")
-    String error;
-
-    @SerializedName("message")
-    String message;
-
-    @SerializedName("path")
-    String path;
-
-    public String getTimestamp() {
-        return timestamp;
-    }
-
-    public void setTimestamp(String timestamp) {
-        this.timestamp = timestamp;
-    }
-
-    public Integer getStatus() {
-        return status;
-    }
-
-    public void setStatus(Integer status) {
-        this.status = status;
-    }
-
-    public String getError() {
-        return error;
-    }
-
-    public void setError(String error) {
-        this.error = error;
-    }
-
-    public String getMessage() {
-        return message;
-    }
-
-    public void setMessage(String message) {
-        this.message = message;
-    }
-
-    public String getPath() {
-        return path;
-    }
-
-    public void setPath(String path) {
-        this.path = path;
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(this.timestamp);
-        dest.writeValue(this.status);
-        dest.writeString(this.error);
-        dest.writeString(this.message);
-        dest.writeString(this.path);
-    }
-
-    public MifosError() {
-    }
-
-    protected MifosError(Parcel in) {
-        this.timestamp = in.readString();
-        this.status = (Integer) in.readValue(Integer.class.getClassLoader());
-        this.error = in.readString();
-        this.message = in.readString();
-        this.path = in.readString();
-    }
-
-    public static final Parcelable.Creator<MifosError> CREATOR =
-            new Parcelable.Creator<MifosError>() {
-                @Override
-                public MifosError createFromParcel(Parcel source) {
-                    return new MifosError(source);
-                }
-
-                @Override
-                public MifosError[] newArray(int size) {
-                    return new MifosError[size];
-                }
-            };
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/error/MifosError.kt b/app/src/main/java/org/apache/fineract/data/models/error/MifosError.kt
new file mode 100644
index 0000000..edf62df
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/error/MifosError.kt
@@ -0,0 +1,20 @@
+package org.apache.fineract.data.models.error
+
+import android.os.Parcelable
+
+import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
+
+/**
+ * @author Rajan Maurya
+ * On 18/06/17.
+ */
+
+@Parcelize
+data class MifosError(
+    @SerializedName("timestamp") var timestamp: String = "",
+    @SerializedName("status") var status: Int? = null,
+    @SerializedName("error") var error: String = "",
+    @SerializedName("message") var message: String = "",
+    @SerializedName("path") var path: String = ""
+) : Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/AccountAssignment.java b/app/src/main/java/org/apache/fineract/data/models/loan/AccountAssignment.java
deleted file mode 100644
index d141e2a..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/loan/AccountAssignment.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.apache.fineract.data.models.loan;
-
-/**
- * @author Rajan Maurya
- *         On 09/07/17.
- */
-public class AccountAssignment {
-
-    private String designator;
-    private String accountIdentifier;
-    private String ledgerIdentifier;
-
-    public String getDesignator() {
-        return designator;
-    }
-
-    public void setDesignator(String designator) {
-        this.designator = designator;
-    }
-
-    public String getAccountIdentifier() {
-        return accountIdentifier;
-    }
-
-    public void setAccountIdentifier(String accountIdentifier) {
-        this.accountIdentifier = accountIdentifier;
-    }
-
-    public String getLedgerIdentifier() {
-        return ledgerIdentifier;
-    }
-
-    public void setLedgerIdentifier(String ledgerIdentifier) {
-        this.ledgerIdentifier = ledgerIdentifier;
-    }
-
-    @Override
-    public String toString() {
-        return "AccountAssignment{" +
-                "designator='" + designator + '\'' +
-                ", accountIdentifier='" + accountIdentifier + '\'' +
-                ", ledgerIdentifier='" + ledgerIdentifier + '\'' +
-                '}';
-    }
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/AccountAssignment.kt b/app/src/main/java/org/apache/fineract/data/models/loan/AccountAssignment.kt
new file mode 100644
index 0000000..4a9e876
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/loan/AccountAssignment.kt
@@ -0,0 +1,13 @@
+package org.apache.fineract.data.models.loan
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * @author Rajan Maurya
+ * On 09/07/17.
+ */
+data class AccountAssignment (
+    @SerializedName("designator") var designator: String? = null,
+    @SerializedName("accountIdentifier") var accountIdentifier: String? = null,
+    @SerializedName("ledgerIdentifier") var ledgerIdentifier: String? = null
+)
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/CreditWorthinessFactor.java b/app/src/main/java/org/apache/fineract/data/models/loan/CreditWorthinessFactor.java
deleted file mode 100644
index 8990a2f..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/loan/CreditWorthinessFactor.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package org.apache.fineract.data.models.loan;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-/**
- * @author Rajan Maurya
- *         On 12/07/17.
- */
-
-public class CreditWorthinessFactor implements Parcelable {
-
-    private String description;
-    private Double amount;
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public Double getAmount() {
-        return amount;
-    }
-
-    public void setAmount(Double amount) {
-        this.amount = amount;
-    }
-
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(this.description);
-        dest.writeValue(this.amount);
-    }
-
-    public CreditWorthinessFactor() {
-    }
-
-    protected CreditWorthinessFactor(Parcel in) {
-        this.description = in.readString();
-        this.amount = (Double) in.readValue(Double.class.getClassLoader());
-    }
-
-    public static final Parcelable.Creator<CreditWorthinessFactor> CREATOR =
-            new Parcelable.Creator<CreditWorthinessFactor>() {
-                @Override
-                public CreditWorthinessFactor createFromParcel(Parcel source) {
-                    return new CreditWorthinessFactor(source);
-                }
-
-                @Override
-                public CreditWorthinessFactor[] newArray(int size) {
-                    return new CreditWorthinessFactor[size];
-                }
-            };
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/CreditWorthinessFactor.kt b/app/src/main/java/org/apache/fineract/data/models/loan/CreditWorthinessFactor.kt
new file mode 100644
index 0000000..73d81dd
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/loan/CreditWorthinessFactor.kt
@@ -0,0 +1,16 @@
+package org.apache.fineract.data.models.loan
+
+import android.os.Parcelable
+import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
+
+/**
+ * @author Rajan Maurya
+ * On 12/07/17.
+ */
+
+@Parcelize
+data class CreditWorthinessFactor(
+    @SerializedName("description") var description: String? = null,
+    @SerializedName("amount") var amount: Double? = null
+) : Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/CreditWorthinessSnapshot.java b/app/src/main/java/org/apache/fineract/data/models/loan/CreditWorthinessSnapshot.java
deleted file mode 100644
index 1fbf557..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/loan/CreditWorthinessSnapshot.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package org.apache.fineract.data.models.loan;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author Rajan Maurya
- *         On 12/07/17.
- */
-
-public class CreditWorthinessSnapshot implements Parcelable {
-
-    private String forCustomer;
-    private List<CreditWorthinessFactor> incomeSources = new ArrayList<>();
-    private List<CreditWorthinessFactor> assets = new ArrayList<>();
-    private List<CreditWorthinessFactor> debts = new ArrayList<>();
-
-    public String getForCustomer() {
-        return forCustomer;
-    }
-
-    public void setForCustomer(String forCustomer) {
-        this.forCustomer = forCustomer;
-    }
-
-    public List<CreditWorthinessFactor> getIncomeSources() {
-        return incomeSources;
-    }
-
-    public void setIncomeSources(
-            List<CreditWorthinessFactor> incomeSources) {
-        this.incomeSources = incomeSources;
-    }
-
-    public List<CreditWorthinessFactor> getAssets() {
-        return assets;
-    }
-
-    public void setAssets(
-            List<CreditWorthinessFactor> assets) {
-        this.assets = assets;
-    }
-
-    public List<CreditWorthinessFactor> getDebts() {
-        return debts;
-    }
-
-    public void setDebts(List<CreditWorthinessFactor> debts) {
-        this.debts = debts;
-    }
-
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(this.forCustomer);
-        dest.writeList(this.incomeSources);
-        dest.writeList(this.assets);
-        dest.writeList(this.debts);
-    }
-
-    public CreditWorthinessSnapshot() {
-    }
-
-    protected CreditWorthinessSnapshot(Parcel in) {
-        this.forCustomer = in.readString();
-        this.incomeSources = new ArrayList<CreditWorthinessFactor>();
-        in.readList(this.incomeSources, CreditWorthinessFactor.class.getClassLoader());
-        this.assets = new ArrayList<CreditWorthinessFactor>();
-        in.readList(this.assets, CreditWorthinessFactor.class.getClassLoader());
-        this.debts = new ArrayList<CreditWorthinessFactor>();
-        in.readList(this.debts, CreditWorthinessFactor.class.getClassLoader());
-    }
-
-    public static final Parcelable.Creator<CreditWorthinessSnapshot> CREATOR =
-            new Parcelable.Creator<CreditWorthinessSnapshot>() {
-                @Override
-                public CreditWorthinessSnapshot createFromParcel(Parcel source) {
-                    return new CreditWorthinessSnapshot(source);
-                }
-
-                @Override
-                public CreditWorthinessSnapshot[] newArray(int size) {
-                    return new CreditWorthinessSnapshot[size];
-                }
-            };
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/CreditWorthinessSnapshot.kt b/app/src/main/java/org/apache/fineract/data/models/loan/CreditWorthinessSnapshot.kt
new file mode 100644
index 0000000..1f7eec3
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/loan/CreditWorthinessSnapshot.kt
@@ -0,0 +1,21 @@
+package org.apache.fineract.data.models.loan
+
+import android.os.Parcelable
+import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
+
+import java.util.ArrayList
+
+/**
+ * @author Rajan Maurya
+ * On 12/07/17.
+ */
+
+@Parcelize
+data class CreditWorthinessSnapshot(
+    @SerializedName("forCustomer") var forCustomer: String? = null,
+    @SerializedName("incomeSources") var incomeSources: List<CreditWorthinessFactor> =
+            ArrayList(),
+    @SerializedName("assets") var assets: List<CreditWorthinessFactor> = ArrayList(),
+    @SerializedName("debts") var debts: List<CreditWorthinessFactor> = ArrayList()
+) : Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/LoanAccount.java b/app/src/main/java/org/apache/fineract/data/models/loan/LoanAccount.java
deleted file mode 100644
index 8385109..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/loan/LoanAccount.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package org.apache.fineract.data.models.loan;
-
-import com.google.gson.Gson;
-import com.google.gson.annotations.SerializedName;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author Rajan Maurya
- *         On 09/07/17.
- */
-public class LoanAccount {
-
-    private String identifier;
-    private String productIdentifier;
-    private String parameters;
-    private List<AccountAssignment> accountAssignments = new ArrayList<>();
-    private State currentState;
-    private String createdOn;
-    private String createdBy;
-    private String lastModifiedOn;
-    private String lastModifiedBy;
-    private LoanParameters loanParameters;
-
-    public enum State {
-
-        @SerializedName("CREATED")
-        CREATED,
-
-        @SerializedName("PENDING")
-        PENDING,
-
-        @SerializedName("APPROVED")
-        APPROVED,
-
-        @SerializedName("ACTIVE")
-        ACTIVE,
-
-        @SerializedName("CLOSED")
-        CLOSED
-    }
-
-    public enum RepayUnitType {
-
-        @SerializedName("WEEKS")
-        WEEKS,
-
-        @SerializedName("MONTHS")
-        MONTHS,
-
-        @SerializedName("YEARS")
-        YEARS,
-    }
-
-    public String getIdentifier() {
-        return identifier;
-    }
-
-    public void setIdentifier(String identifier) {
-        this.identifier = identifier;
-    }
-
-    public String getProductIdentifier() {
-        return productIdentifier;
-    }
-
-    public void setProductIdentifier(String productIdentifier) {
-        this.productIdentifier = productIdentifier;
-    }
-
-    public String getParameters() {
-        return parameters;
-    }
-
-    public void setParameters(String parameters) {
-        this.parameters = parameters;
-    }
-
-    public List<AccountAssignment> getAccountAssignments() {
-        return accountAssignments;
-    }
-
-    public void setAccountAssignments(
-            List<AccountAssignment> accountAssignments) {
-        this.accountAssignments = accountAssignments;
-    }
-
-    public State getCurrentState() {
-        return currentState;
-    }
-
-    public void setCurrentState(State currentState) {
-        this.currentState = currentState;
-    }
-
-    public String getCreatedOn() {
-        return createdOn;
-    }
-
-    public void setCreatedOn(String createdOn) {
-        this.createdOn = createdOn;
-    }
-
-    public String getCreatedBy() {
-        return createdBy;
-    }
-
-    public void setCreatedBy(String createdBy) {
-        this.createdBy = createdBy;
-    }
-
-    public String getLastModifiedOn() {
-        return lastModifiedOn;
-    }
-
-    public void setLastModifiedOn(String lastModifiedOn) {
-        this.lastModifiedOn = lastModifiedOn;
-    }
-
-    public String getLastModifiedBy() {
-        return lastModifiedBy;
-    }
-
-    public void setLastModifiedBy(String lastModifiedBy) {
-        this.lastModifiedBy = lastModifiedBy;
-    }
-
-    public LoanParameters getLoanParameters() {
-        return new Gson().fromJson(parameters, LoanParameters.class);
-    }
-
-    /*public void setLoanParameters() {
-        this.loanParameters = gson.fromJson(parameters, LoanParameters.class);;
-    }*/
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/LoanAccount.kt b/app/src/main/java/org/apache/fineract/data/models/loan/LoanAccount.kt
new file mode 100644
index 0000000..b1daa84
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/loan/LoanAccount.kt
@@ -0,0 +1,64 @@
+package org.apache.fineract.data.models.loan
+
+import com.google.gson.Gson
+import com.google.gson.annotations.SerializedName
+
+import java.util.ArrayList
+
+/**
+ * @author Rajan Maurya
+ * On 09/07/17.
+ */
+data class LoanAccount(
+    @SerializedName("identifier") var identifier: String? = null,
+    @SerializedName("productIdentifier")  var productIdentifier: String? = null,
+    @SerializedName("parameters") var parameters: String? = null,
+    @SerializedName("accountAssignments") var accountAssignments: List<AccountAssignment> =
+            ArrayList(),
+    @SerializedName("currentState") var currentState: State? = null,
+    @SerializedName("createdOn") var createdOn: String? = null,
+    @SerializedName("createdBy") var createdBy: String? = null,
+    @SerializedName("lastModifiedOn") var lastModifiedOn: String? = null,
+    @SerializedName("lastModifiedBy") var lastModifiedBy: String? = null
+) {
+
+    private val loanParameters: LoanParameters? = null
+
+    enum class State {
+
+        @SerializedName("CREATED")
+        CREATED,
+
+        @SerializedName("PENDING")
+        PENDING,
+
+        @SerializedName("APPROVED")
+        APPROVED,
+
+        @SerializedName("ACTIVE")
+        ACTIVE,
+
+        @SerializedName("CLOSED")
+        CLOSED
+    }
+
+    enum class RepayUnitType {
+
+        @SerializedName("WEEKS")
+        WEEKS,
+
+        @SerializedName("MONTHS")
+        MONTHS,
+
+        @SerializedName("YEARS")
+        YEARS
+    }
+
+    fun getLoanParameters(): LoanParameters {
+        return Gson().fromJson(parameters, LoanParameters::class.java)
+    }
+
+    /*public void setLoanParameters() {
+        this.loanParameters = gson.fromJson(parameters, LoanParameters.class);;
+    }*/
+}
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/LoanAccountPage.java b/app/src/main/java/org/apache/fineract/data/models/loan/LoanAccountPage.java
deleted file mode 100644
index df00674..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/loan/LoanAccountPage.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.apache.fineract.data.models.loan;
-
-import com.google.gson.annotations.SerializedName;
-
-import java.util.List;
-
-/**
- * @author Rajan Maurya
- *         On 09/07/17.
- */
-
-public class LoanAccountPage {
-
-    @SerializedName("elements")
-    private List<LoanAccount> loanAccounts;
-    private Integer totalPages;
-    private Long totalElements;
-
-    public List<LoanAccount> getLoanAccounts() {
-        return loanAccounts;
-    }
-
-    public void setLoanAccounts(
-            List<LoanAccount> loanAccounts) {
-        this.loanAccounts = loanAccounts;
-    }
-
-    public Integer getTotalPages() {
-        return totalPages;
-    }
-
-    public void setTotalPages(Integer totalPages) {
-        this.totalPages = totalPages;
-    }
-
-    public Long getTotalElements() {
-        return totalElements;
-    }
-
-    public void setTotalElements(Long totalElements) {
-        this.totalElements = totalElements;
-    }
-
-    @Override
-    public String toString() {
-        return "LoanAccountPage{" +
-                "loanAccounts=" + loanAccounts +
-                ", totalPages=" + totalPages +
-                ", totalElements=" + totalElements +
-                '}';
-    }
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/LoanAccountPage.kt b/app/src/main/java/org/apache/fineract/data/models/loan/LoanAccountPage.kt
new file mode 100644
index 0000000..4ca433c
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/loan/LoanAccountPage.kt
@@ -0,0 +1,14 @@
+package org.apache.fineract.data.models.loan
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * @author Rajan Maurya
+ * On 09/07/17.
+ */
+
+data class LoanAccountPage(
+    @SerializedName("elements") var loanAccounts: List<LoanAccount>? = null,
+    @SerializedName("totalPages") var totalPages: Int? = null,
+    @SerializedName("totalElements") var totalElements: Long? = null
+)
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/LoanParameters.java b/app/src/main/java/org/apache/fineract/data/models/loan/LoanParameters.java
deleted file mode 100644
index 3769478..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/loan/LoanParameters.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.apache.fineract.data.models.loan;
-
-import java.util.List;
-
-/**
- * @author Rajan Maurya
- *         On 12/07/17.
- */
-
-public class LoanParameters {
-
-    private String customerIdentifier;
-    private List<CreditWorthinessSnapshot> creditWorthinessSnapshots;
-    private Double maximumBalance;
-    private TermRange termRange;
-    private PaymentCycle paymentCycle;
-
-    public String getCustomerIdentifier() {
-        return customerIdentifier;
-    }
-
-    public void setCustomerIdentifier(String customerIdentifier) {
-        this.customerIdentifier = customerIdentifier;
-    }
-
-    public List<CreditWorthinessSnapshot> getCreditWorthinessSnapshots() {
-        return creditWorthinessSnapshots;
-    }
-
-    public void setCreditWorthinessSnapshots(
-            List<CreditWorthinessSnapshot> creditWorthinessSnapshots) {
-        this.creditWorthinessSnapshots = creditWorthinessSnapshots;
-    }
-
-    public Double getMaximumBalance() {
-        return maximumBalance;
-    }
-
-    public void setMaximumBalance(Double maximumBalance) {
-        this.maximumBalance = maximumBalance;
-    }
-
-    public TermRange getTermRange() {
-        return termRange;
-    }
-
-    public void setTermRange(TermRange termRange) {
-        this.termRange = termRange;
-    }
-
-    public PaymentCycle getPaymentCycle() {
-        return paymentCycle;
-    }
-
-    public void setPaymentCycle(PaymentCycle paymentCycle) {
-        this.paymentCycle = paymentCycle;
-    }
-
-    @Override
-    public String toString() {
-        return "LoanParameters{" +
-                "customerIdentifier='" + customerIdentifier + '\'' +
-                ", creditWorthinessSnapshots=" + creditWorthinessSnapshots +
-                ", maximumBalance=" + maximumBalance +
-                ", termRange=" + termRange +
-                ", paymentCycle=" + paymentCycle +
-                '}';
-    }
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/LoanParameters.kt b/app/src/main/java/org/apache/fineract/data/models/loan/LoanParameters.kt
new file mode 100644
index 0000000..08e9b08
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/loan/LoanParameters.kt
@@ -0,0 +1,17 @@
+package org.apache.fineract.data.models.loan
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * @author Rajan Maurya
+ * On 12/07/17.
+ */
+
+data class LoanParameters(
+    @SerializedName("customerIdentifier") var customerIdentifier: String? = null,
+    @SerializedName("creditWorthinessSnapshots") var creditWorthinessSnapshots:
+    List<CreditWorthinessSnapshot>? = null,
+    @SerializedName("maximumBalance") var maximumBalance: Double? = null,
+    @SerializedName("termRange") var termRange: TermRange? = null,
+    @SerializedName("paymentCycle") var paymentCycle: PaymentCycle? = null
+)
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/PaymentCycle.java b/app/src/main/java/org/apache/fineract/data/models/loan/PaymentCycle.java
deleted file mode 100644
index 1e01bc4..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/loan/PaymentCycle.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.apache.fineract.data.models.loan;
-
-/**
- * @author Rajan Maurya
- *         On 12/07/17.
- */
-
-public class PaymentCycle {
-
-    private String temporalUnit;
-    private Integer period;
-    private Integer alignmentDay;
-    private Integer alignmentWeek;
-    private Integer alignmentMonth;
-
-    public String getTemporalUnit() {
-        return temporalUnit;
-    }
-
-    public void setTemporalUnit(String temporalUnit) {
-        this.temporalUnit = temporalUnit;
-    }
-
-    public Integer getPeriod() {
-        return period;
-    }
-
-    public void setPeriod(Integer period) {
-        this.period = period;
-    }
-
-    public Integer getAlignmentDay() {
-        return alignmentDay;
-    }
-
-    public void setAlignmentDay(Integer alignmentDay) {
-        this.alignmentDay = alignmentDay;
-    }
-
-    public Integer getAlignmentWeek() {
-        return alignmentWeek;
-    }
-
-    public void setAlignmentWeek(Integer alignmentWeek) {
-        this.alignmentWeek = alignmentWeek;
-    }
-
-    public Integer getAlignmentMonth() {
-        return alignmentMonth;
-    }
-
-    public void setAlignmentMonth(Integer alignmentMonth) {
-        this.alignmentMonth = alignmentMonth;
-    }
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/PaymentCycle.kt b/app/src/main/java/org/apache/fineract/data/models/loan/PaymentCycle.kt
new file mode 100644
index 0000000..63fafe2
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/loan/PaymentCycle.kt
@@ -0,0 +1,16 @@
+package org.apache.fineract.data.models.loan
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * @author Rajan Maurya
+ * On 12/07/17.
+ */
+
+data class PaymentCycle (
+    @SerializedName("temporalUnit") var temporalUnit: String? = null,
+    @SerializedName("period") var period: Int? = null,
+    @SerializedName("alignmentDay") var alignmentDay: Int? = null,
+    @SerializedName("alignmentWeek") var alignmentWeek: Int? = null,
+    @SerializedName("alignmentMonth") var alignmentMonth: Int? = null
+)
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/TermRange.java b/app/src/main/java/org/apache/fineract/data/models/loan/TermRange.java
deleted file mode 100644
index 6dda437..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/loan/TermRange.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.apache.fineract.data.models.loan;
-
-/**
- * @author Rajan Maurya
- *         On 12/07/17.
- */
-public class TermRange {
-
-    private String temporalUnit;
-    private Double maximum;
-
-    public TermRange(String temporalUnit, Double maximum) {
-        this.temporalUnit = temporalUnit;
-        this.maximum = maximum;
-    }
-
-    public String getTemporalUnit() {
-        return temporalUnit;
-    }
-
-    public void setTemporalUnit(String temporalUnit) {
-        this.temporalUnit = temporalUnit;
-    }
-
-    public Double getMaximum() {
-        return maximum;
-    }
-
-    public void setMaximum(Double maximum) {
-        this.maximum = maximum;
-    }
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/loan/TermRange.kt b/app/src/main/java/org/apache/fineract/data/models/loan/TermRange.kt
new file mode 100644
index 0000000..5a472c2
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/loan/TermRange.kt
@@ -0,0 +1,12 @@
+package org.apache.fineract.data.models.loan
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * @author Rajan Maurya
+ * On 12/07/17.
+ */
+data class TermRange(
+    @SerializedName("temporalUnit") var temporalUnit: String?,
+    @SerializedName("maximum") var maximum: Double?
+)
diff --git a/app/src/main/java/org/apache/fineract/data/models/payment/ChargeName.java b/app/src/main/java/org/apache/fineract/data/models/payment/ChargeName.java
deleted file mode 100644
index c18fc75..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/payment/ChargeName.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.apache.fineract.data.models.payment;
-
-/**
- * @author Rajan Maurya
- *         On 13/07/17.
- */
-
-public class ChargeName {
-
-    private String identifier;
-    private String name;
-
-    public String getIdentifier() {
-        return identifier;
-    }
-
-    public void setIdentifier(String identifier) {
-        this.identifier = identifier;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/payment/ChargeName.kt b/app/src/main/java/org/apache/fineract/data/models/payment/ChargeName.kt
new file mode 100644
index 0000000..edbb93f
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/payment/ChargeName.kt
@@ -0,0 +1,13 @@
+package org.apache.fineract.data.models.payment
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * @author Rajan Maurya
+ * On 13/07/17.
+ */
+
+data class ChargeName (
+    @SerializedName("identifier") var identifier: String? = null,
+    @SerializedName("name") var name: String? = null
+)
diff --git a/app/src/main/java/org/apache/fineract/data/models/payment/CostComponent.java b/app/src/main/java/org/apache/fineract/data/models/payment/CostComponent.java
deleted file mode 100644
index 5179ea9..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/payment/CostComponent.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.apache.fineract.data.models.payment;
-
-/**
- * @author Rajan Maurya
- *         On 13/07/17.
- */
-
-public class CostComponent {
-
-    private String chargeIdentifier;
-    private Double amount;
-
-    public String getChargeIdentifier() {
-        return chargeIdentifier;
-    }
-
-    public void setChargeIdentifier(String chargeIdentifier) {
-        this.chargeIdentifier = chargeIdentifier;
-    }
-
-    public Double getAmount() {
-        return amount;
-    }
-
-    public void setAmount(Double amount) {
-        this.amount = amount;
-    }
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/payment/CostComponent.kt b/app/src/main/java/org/apache/fineract/data/models/payment/CostComponent.kt
new file mode 100644
index 0000000..14e4d7a
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/payment/CostComponent.kt
@@ -0,0 +1,13 @@
+package org.apache.fineract.data.models.payment
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * @author Rajan Maurya
+ * On 13/07/17.
+ */
+
+data class CostComponent (
+    @SerializedName("chargeIdentifier") var chargeIdentifier: String? = null,
+    @SerializedName("amount") var amount: Double? = null
+)
diff --git a/app/src/main/java/org/apache/fineract/data/models/payment/PlannedPayment.java b/app/src/main/java/org/apache/fineract/data/models/payment/PlannedPayment.java
deleted file mode 100644
index a657a56..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/payment/PlannedPayment.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.apache.fineract.data.models.payment;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author Rajan Maurya
- *         On 13/07/17.
- */
-public class PlannedPayment {
-
-    private Double interestRate;
-    private List<CostComponent> costComponents = new ArrayList<>();
-    private Double remainingPrincipal;
-    private String date;
-
-    public Double getInterestRate() {
-        return interestRate;
-    }
-
-    public void setInterestRate(Double interestRate) {
-        this.interestRate = interestRate;
-    }
-
-    public List<CostComponent> getCostComponents() {
-        return costComponents;
-    }
-
-    public void setCostComponents(
-            List<CostComponent> costComponents) {
-        this.costComponents = costComponents;
-    }
-
-    public Double getRemainingPrincipal() {
-        return remainingPrincipal;
-    }
-
-    public void setRemainingPrincipal(Double remainingPrincipal) {
-        this.remainingPrincipal = remainingPrincipal;
-    }
-
-    public String getDate() {
-        return date;
-    }
-
-    public void setDate(String date) {
-        this.date = date;
-    }
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/payment/PlannedPayment.kt b/app/src/main/java/org/apache/fineract/data/models/payment/PlannedPayment.kt
new file mode 100644
index 0000000..b460395
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/payment/PlannedPayment.kt
@@ -0,0 +1,15 @@
+package org.apache.fineract.data.models.payment
+
+import com.google.gson.annotations.SerializedName
+import java.util.ArrayList
+
+/**
+ * @author Rajan Maurya
+ * On 13/07/17.
+ */
+data class PlannedPayment (
+    @SerializedName("interestRate") var interestRate: Double? = null,
+    @SerializedName("costComponents") var costComponents: List<CostComponent> = ArrayList(),
+    @SerializedName("remainingPrincipal") var remainingPrincipal: Double? = null,
+    @SerializedName("date") var date: String? = null
+)
diff --git a/app/src/main/java/org/apache/fineract/data/models/payment/PlannedPaymentPage.java b/app/src/main/java/org/apache/fineract/data/models/payment/PlannedPaymentPage.java
deleted file mode 100644
index 3cd4a76..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/payment/PlannedPaymentPage.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.apache.fineract.data.models.payment;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author Rajan Maurya
- *         On 13/07/17.
- */
-public class PlannedPaymentPage {
-
-    private List<ChargeName> chargeNames = new ArrayList<>();
-    private List<PlannedPayment> elements = new ArrayList<>();
-    private Integer totalPages;
-    private Long totalElements;
-
-    public List<ChargeName> getChargeNames() {
-        return chargeNames;
-    }
-
-    public void setChargeNames(
-            List<ChargeName> chargeNames) {
-        this.chargeNames = chargeNames;
-    }
-
-    public List<PlannedPayment> getElements() {
-        return elements;
-    }
-
-    public void setElements(
-            List<PlannedPayment> elements) {
-        this.elements = elements;
-    }
-
-    public Integer getTotalPages() {
-        return totalPages;
-    }
-
-    public void setTotalPages(Integer totalPages) {
-        this.totalPages = totalPages;
-    }
-
-    public Long getTotalElements() {
-        return totalElements;
-    }
-
-    public void setTotalElements(Long totalElements) {
-        this.totalElements = totalElements;
-    }
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/payment/PlannedPaymentPage.kt b/app/src/main/java/org/apache/fineract/data/models/payment/PlannedPaymentPage.kt
new file mode 100644
index 0000000..22aface
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/payment/PlannedPaymentPage.kt
@@ -0,0 +1,15 @@
+package org.apache.fineract.data.models.payment
+
+import com.google.gson.annotations.SerializedName
+import java.util.ArrayList
+
+/**
+ * @author Rajan Maurya
+ * On 13/07/17.
+ */
+data class PlannedPaymentPage (
+    @SerializedName("chargeNames") var chargeNames: List<ChargeName> = ArrayList(),
+    @SerializedName("elements") var elements: List<PlannedPayment> = ArrayList(),
+    @SerializedName("totalPages") var totalPages: Int? = null,
+    @SerializedName("totalElements") var totalElements: Long? = null
+)
diff --git a/app/src/main/java/org/apache/fineract/data/models/product/BalanceRange.java b/app/src/main/java/org/apache/fineract/data/models/product/BalanceRange.java
deleted file mode 100644
index 40be313..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/product/BalanceRange.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.apache.fineract.data.models.product;
-
-/**
- * @author Rajan Maurya
- *         On 20/07/17.
- */
-
-public class BalanceRange {
-
-    private Double minimum;
-    private Double maximum;
-
-    public Double getMinimum() {
-        return minimum;
-    }
-
-    public void setMinimum(Double minimum) {
-        this.minimum = minimum;
-    }
-
-    public Double getMaximum() {
-        return maximum;
-    }
-
-    public void setMaximum(Double maximum) {
-        this.maximum = maximum;
-    }
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/product/BalanceRange.kt b/app/src/main/java/org/apache/fineract/data/models/product/BalanceRange.kt
new file mode 100644
index 0000000..80c9014
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/product/BalanceRange.kt
@@ -0,0 +1,13 @@
+package org.apache.fineract.data.models.product
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * @author Rajan Maurya
+ * On 20/07/17.
+ */
+
+data class BalanceRange (
+    @SerializedName("minimum") var minimum: Double? = null,
+    @SerializedName("maximum") var maximum: Double? = null
+)
diff --git a/app/src/main/java/org/apache/fineract/data/models/product/InterestBasis.java b/app/src/main/java/org/apache/fineract/data/models/product/InterestBasis.java
deleted file mode 100644
index 1a3e61c..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/product/InterestBasis.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package org.apache.fineract.data.models.product;
-
-/**
- * @author Rajan Maurya
- *         On 20/07/17.
- */
-
-public enum  InterestBasis {
-
-    CURRENT_BALANCE,
-    BEGINNING_BALANCE
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/product/InterestBasis.kt b/app/src/main/java/org/apache/fineract/data/models/product/InterestBasis.kt
new file mode 100644
index 0000000..a3f39b4
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/product/InterestBasis.kt
@@ -0,0 +1,12 @@
+package org.apache.fineract.data.models.product
+
+/**
+ * @author Rajan Maurya
+ * On 20/07/17.
+ */
+
+enum class InterestBasis {
+
+    CURRENT_BALANCE,
+    BEGINNING_BALANCE
+}
diff --git a/app/src/main/java/org/apache/fineract/data/models/product/InterestRange.java b/app/src/main/java/org/apache/fineract/data/models/product/InterestRange.java
deleted file mode 100644
index e6cf1f4..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/product/InterestRange.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.apache.fineract.data.models.product;
-
-/**
- * @author Rajan Maurya
- *         On 20/07/17.
- */
-
-public class   InterestRange {
-
-    private Double minimum;
-    private Double maximum;
-
-    public Double getMinimum() {
-        return minimum;
-    }
-
-    public void setMinimum(Double minimum) {
-        this.minimum = minimum;
-    }
-
-    public Double getMaximum() {
-        return maximum;
-    }
-
-    public void setMaximum(Double maximum) {
-        this.maximum = maximum;
-    }
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/product/InterestRange.kt b/app/src/main/java/org/apache/fineract/data/models/product/InterestRange.kt
new file mode 100644
index 0000000..f5882f1
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/product/InterestRange.kt
@@ -0,0 +1,13 @@
+package org.apache.fineract.data.models.product
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * @author Rajan Maurya
+ * On 20/07/17.
+ */
+
+data class InterestRange (
+    @SerializedName("minimum") var minimum: Double? = null,
+    @SerializedName("maximum") var maximum: Double? = null
+)
diff --git a/app/src/main/java/org/apache/fineract/data/models/product/Product.java b/app/src/main/java/org/apache/fineract/data/models/product/Product.java
deleted file mode 100644
index c29f428..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/product/Product.java
+++ /dev/null
@@ -1,161 +0,0 @@
-package org.apache.fineract.data.models.product;
-
-import org.apache.fineract.data.models.loan.AccountAssignment;
-import org.apache.fineract.data.models.loan.TermRange;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author Rajan Maurya
- *         On 20/07/17.
- */
-
-public class Product {
-
-    private String identifier;
-    private String name;
-    private TermRange termRange;
-    private BalanceRange balanceRange;
-    private InterestRange interestRange;
-    private InterestBasis interestBasis;
-    private String patternPackage;
-    private String description;
-    private String currencyCode;
-    private int minorCurrencyUnitDigits;
-    private List<AccountAssignment> accountAssignments = new ArrayList<>();
-    private String parameters;
-    private String createdOn;
-    private String createdBy;
-    private String lastModifiedOn;
-    private String lastModifiedBy;
-
-    public String getIdentifier() {
-        return identifier;
-    }
-
-    public void setIdentifier(String identifier) {
-        this.identifier = identifier;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public TermRange getTermRange() {
-        return termRange;
-    }
-
-    public void setTermRange(TermRange termRange) {
-        this.termRange = termRange;
-    }
-
-    public BalanceRange getBalanceRange() {
-        return balanceRange;
-    }
-
-    public void setBalanceRange(BalanceRange balanceRange) {
-        this.balanceRange = balanceRange;
-    }
-
-    public InterestRange getInterestRange() {
-        return interestRange;
-    }
-
-    public void setInterestRange(InterestRange interestRange) {
-        this.interestRange = interestRange;
-    }
-
-    public InterestBasis getInterestBasis() {
-        return interestBasis;
-    }
-
-    public void setInterestBasis(InterestBasis interestBasis) {
-        this.interestBasis = interestBasis;
-    }
-
-    public String getPatternPackage() {
-        return patternPackage;
-    }
-
-    public void setPatternPackage(String patternPackage) {
-        this.patternPackage = patternPackage;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public String getCurrencyCode() {
-        return currencyCode;
-    }
-
-    public void setCurrencyCode(String currencyCode) {
-        this.currencyCode = currencyCode;
-    }
-
-    public int getMinorCurrencyUnitDigits() {
-        return minorCurrencyUnitDigits;
-    }
-
-    public void setMinorCurrencyUnitDigits(int minorCurrencyUnitDigits) {
-        this.minorCurrencyUnitDigits = minorCurrencyUnitDigits;
-    }
-
-    public List<AccountAssignment> getAccountAssignments() {
-        return accountAssignments;
-    }
-
-    public void setAccountAssignments(
-            List<AccountAssignment> accountAssignments) {
-        this.accountAssignments = accountAssignments;
-    }
-
-    public String getParameters() {
-        return parameters;
-    }
-
-    public void setParameters(String parameters) {
-        this.parameters = parameters;
-    }
-
-    public String getCreatedOn() {
-        return createdOn;
-    }
-
-    public void setCreatedOn(String createdOn) {
-        this.createdOn = createdOn;
-    }
-
-    public String getCreatedBy() {
-        return createdBy;
-    }
-
-    public void setCreatedBy(String createdBy) {
-        this.createdBy = createdBy;
-    }
-
-    public String getLastModifiedOn() {
-        return lastModifiedOn;
-    }
-
-    public void setLastModifiedOn(String lastModifiedOn) {
-        this.lastModifiedOn = lastModifiedOn;
-    }
-
-    public String getLastModifiedBy() {
-        return lastModifiedBy;
-    }
-
-    public void setLastModifiedBy(String lastModifiedBy) {
-        this.lastModifiedBy = lastModifiedBy;
-    }
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/product/Product.kt b/app/src/main/java/org/apache/fineract/data/models/product/Product.kt
new file mode 100644
index 0000000..c6e9479
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/product/Product.kt
@@ -0,0 +1,32 @@
+package org.apache.fineract.data.models.product
+
+import com.google.gson.annotations.SerializedName
+import org.apache.fineract.data.models.loan.AccountAssignment
+import org.apache.fineract.data.models.loan.TermRange
+
+import java.util.ArrayList
+
+/**
+ * @author Rajan Maurya
+ * On 20/07/17.
+ */
+
+data class Product (
+    @SerializedName("identifier")  var identifier: String? = null,
+    @SerializedName("name") var name: String? = null,
+    @SerializedName("termRange") var termRange: TermRange? = null,
+    @SerializedName("balanceRange") var balanceRange: BalanceRange? = null,
+    @SerializedName("interestRange") var interestRange: InterestRange? = null,
+    @SerializedName("interestBasis") var interestBasis: InterestBasis? = null,
+    @SerializedName("patternPackage") var patternPackage: String? = null,
+    @SerializedName("description") var description: String? = null,
+    @SerializedName("currencyCode") var currencyCode: String? = null,
+    @SerializedName("minorCurrencyUnitDigits") var minorCurrencyUnitDigits: Int = 0,
+    @SerializedName("accountAssignments") var accountAssignments: List<AccountAssignment> =
+            ArrayList(),
+    @SerializedName("parameters") var parameters: String? = null,
+    @SerializedName("createdOn") var createdOn: String? = null,
+    @SerializedName("createdBy") var createdBy: String? = null,
+    @SerializedName("lastModifiedOn") var lastModifiedOn: String? = null,
+    @SerializedName("lastModifiedBy") var lastModifiedBy: String? = null
+)
diff --git a/app/src/main/java/org/apache/fineract/data/models/product/ProductPage.java b/app/src/main/java/org/apache/fineract/data/models/product/ProductPage.java
deleted file mode 100644
index 1dc5c21..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/product/ProductPage.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.apache.fineract.data.models.product;
-
-import java.util.List;
-
-/**
- * @author Rajan Maurya
- *         On 20/07/17.
- */
-
-public class ProductPage {
-
-    private List<Product> elements;
-    private Integer totalPages;
-    private Long totalElements;
-
-    public List<Product> getElements() {
-        return elements;
-    }
-
-    public void setElements(List<Product> elements) {
-        this.elements = elements;
-    }
-
-    public Integer getTotalPages() {
-        return totalPages;
-    }
-
-    public void setTotalPages(Integer totalPages) {
-        this.totalPages = totalPages;
-    }
-
-    public Long getTotalElements() {
-        return totalElements;
-    }
-
-    public void setTotalElements(Long totalElements) {
-        this.totalElements = totalElements;
-    }
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/product/ProductPage.kt b/app/src/main/java/org/apache/fineract/data/models/product/ProductPage.kt
new file mode 100644
index 0000000..b96190c
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/product/ProductPage.kt
@@ -0,0 +1,14 @@
+package org.apache.fineract.data.models.product
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * @author Rajan Maurya
+ * On 20/07/17.
+ */
+
+data class ProductPage (
+        @SerializedName("elements") var elements: List<Product>? = null,
+        @SerializedName("totalPages") var totalPages: Int? = null,
+        @SerializedName("totalElements") var totalElements: Long? = null
+)
diff --git a/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/AllowedOperation.java b/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/AllowedOperation.java
deleted file mode 100644
index 37d91c5..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/AllowedOperation.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.apache.fineract.data.models.rolesandpermission;
-
-import com.google.gson.annotations.SerializedName;
-
-/**
- * @author Rajan Maurya
- *         On 24/08/17.
- */
-public enum AllowedOperation {
-
-    @SerializedName("READ")
-    READ, //GET, HEAD
-
-    @SerializedName("CHANGE")
-    CHANGE, //POST, PUT
-
-    @SerializedName("DELETE")
-    DELETE //DELETE
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/AllowedOperation.kt b/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/AllowedOperation.kt
new file mode 100644
index 0000000..d1b7897
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/AllowedOperation.kt
@@ -0,0 +1,16 @@
+package org.apache.fineract.data.models.rolesandpermission
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * @author Rajan Maurya
+ * On 24/08/17.
+ */
+enum class AllowedOperation {
+
+    @SerializedName("READ") READ, //GET, HEAD
+
+    @SerializedName("CHANGE") CHANGE, //POST, PUT
+
+    @SerializedName("DELETE") DELETE //DELETE
+}
diff --git a/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/Permission.java b/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/Permission.java
deleted file mode 100644
index 2c8b5c6..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/Permission.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package org.apache.fineract.data.models.rolesandpermission;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import com.google.gson.annotations.SerializedName;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author Rajan Maurya
- *         On 24/08/17.
- */
-public class Permission implements Parcelable {
-
-    @SerializedName("permittableEndpointGroupIdentifier")
-    private String permittableEndpointGroupIdentifier;
-
-    @SerializedName("allowedOperations")
-    private List<AllowedOperation> allowedOperations;
-
-    public String getPermittableEndpointGroupIdentifier() {
-        return permittableEndpointGroupIdentifier;
-    }
-
-    public void setPermittableEndpointGroupIdentifier(String permittableEndpointGroupIdentifier) {
-        this.permittableEndpointGroupIdentifier = permittableEndpointGroupIdentifier;
-    }
-
-    public List<AllowedOperation> getAllowedOperations() {
-        return allowedOperations;
-    }
-
-    public void setAllowedOperations(
-            List<AllowedOperation> allowedOperations) {
-        this.allowedOperations = allowedOperations;
-    }
-
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(this.permittableEndpointGroupIdentifier);
-        dest.writeList(this.allowedOperations);
-    }
-
-    public Permission() {
-    }
-
-    protected Permission(Parcel in) {
-        this.permittableEndpointGroupIdentifier = in.readString();
-        this.allowedOperations = new ArrayList<AllowedOperation>();
-        in.readList(this.allowedOperations, AllowedOperation.class.getClassLoader());
-    }
-
-    public static final Parcelable.Creator<Permission> CREATOR =
-            new Parcelable.Creator<Permission>() {
-                @Override
-                public Permission createFromParcel(Parcel source) {
-                    return new Permission(source);
-                }
-
-                @Override
-                public Permission[] newArray(int size) {
-                    return new Permission[size];
-                }
-            };
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/Permission.kt b/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/Permission.kt
new file mode 100644
index 0000000..9c1dca8
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/Permission.kt
@@ -0,0 +1,19 @@
+package org.apache.fineract.data.models.rolesandpermission
+
+import android.os.Parcelable
+
+import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
+
+import java.util.ArrayList
+
+/**
+ * @author Rajan Maurya
+ * On 24/08/17.
+ */
+@Parcelize
+data class Permission(
+    @SerializedName("permittableEndpointGroupIdentifier") var
+    permittableEndpointGroupIdentifier: String? = null,
+    @SerializedName("allowedOperations") var allowedOperations: List<AllowedOperation>? = null
+) : Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/Role.java b/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/Role.java
deleted file mode 100644
index 4229fc1..0000000
--- a/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/Role.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.apache.fineract.data.models.rolesandpermission;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import com.google.gson.annotations.SerializedName;
-
-import java.util.List;
-
-/**
- * @author Rajan Maurya
- *         On 24/08/17.
- */
-public class Role implements Parcelable {
-
-    @SerializedName("identifier")
-    private String identifier;
-
-    @SerializedName("permissions")
-    private List<Permission> permissions;
-
-    public String getIdentifier() {
-        return identifier;
-    }
-
-    public void setIdentifier(String identifier) {
-        this.identifier = identifier;
-    }
-
-    public List<Permission> getPermissions() {
-        return permissions;
-    }
-
-    public void setPermissions(
-            List<Permission> permissions) {
-        this.permissions = permissions;
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(this.identifier);
-        dest.writeTypedList(this.permissions);
-    }
-
-    public Role() {
-    }
-
-    protected Role(Parcel in) {
-        this.identifier = in.readString();
-        this.permissions = in.createTypedArrayList(Permission.CREATOR);
-    }
-
-    public static final Parcelable.Creator<Role> CREATOR = new Parcelable.Creator<Role>() {
-        @Override
-        public Role createFromParcel(Parcel source) {
-            return new Role(source);
-        }
-
-        @Override
-        public Role[] newArray(int size) {
-            return new Role[size];
-        }
-    };
-}
diff --git a/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/Role.kt b/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/Role.kt
new file mode 100644
index 0000000..5f2891b
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/data/models/rolesandpermission/Role.kt
@@ -0,0 +1,16 @@
+package org.apache.fineract.data.models.rolesandpermission
+
+import android.os.Parcelable
+
+import com.google.gson.annotations.SerializedName
+import kotlinx.android.parcel.Parcelize
+
+/**
+ * @author Rajan Maurya
+ * On 24/08/17.
+ */
+@Parcelize
+data class Role(
+    @SerializedName("identifier") var identifier: String? = null,
+    @SerializedName("permissions") var permissions: List<Permission>? = null
+) : Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/fineract/ui/adapters/CreateCustomerStepAdapter.java b/app/src/main/java/org/apache/fineract/ui/adapters/CreateCustomerStepAdapter.java
index d20e8e9..8aa8f69 100644
--- a/app/src/main/java/org/apache/fineract/ui/adapters/CreateCustomerStepAdapter.java
+++ b/app/src/main/java/org/apache/fineract/ui/adapters/CreateCustomerStepAdapter.java
@@ -16,6 +16,7 @@
 import org.apache.fineract.ui.online.customers.createcustomer.FormCustomerDetailsFragment;
 import org.apache.fineract.ui.online.customers.createcustomer.formcustomeraddress
         .FormCustomerAddressFragment;
+import org.apache.fineract.ui.online.review.CreateCustomerReviewFragment;
 
 /**
  * @author Rajan Maurya
@@ -52,6 +53,8 @@ public Step createStep(@IntRange(from = 0L) int position) {
                 return FormCustomerAddressFragment.newInstance(customer, customerAction);
             case 2:
                 return FormCustomerContactFragment.newInstance(customer, customerAction);
+            case 3:
+                return CreateCustomerReviewFragment.newInstance();
 
         }
         return null;
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/FormCustomerDetailsFragment.java b/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/FormCustomerDetailsFragment.java
index 49d1181..d4ccf31 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/FormCustomerDetailsFragment.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/FormCustomerDetailsFragment.java
@@ -187,7 +187,7 @@ public VerificationError verifyStep() {
                     etFirstName.getText().toString().trim(),
                     etLastName.getText().toString().trim(),
                     etMiddleName.getText().toString().trim(), dateOfBirth,
-                    cbIsmember.isEnabled());
+                    cbIsmember.isChecked());
         }
         return null;
     }
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/OnNavigationBarListener.java b/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/OnNavigationBarListener.java
index 95e2495..83ccf14 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/OnNavigationBarListener.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/OnNavigationBarListener.java
@@ -2,6 +2,7 @@
 
 import org.apache.fineract.data.models.customer.Address;
 import org.apache.fineract.data.models.customer.ContactDetail;
+import org.apache.fineract.data.models.customer.Customer;
 import org.apache.fineract.data.models.customer.DateOfBirth;
 
 import java.util.List;
@@ -15,6 +16,8 @@
     interface CustomerDetails {
         void setCustomerDetails(String identifier, String firstName, String surname,
                 String middleName, DateOfBirth dateOfBirth, boolean isMember);
+
+        Customer getCustomer();
     }
 
     interface CustomerAddress {
@@ -24,4 +27,5 @@ void setCustomerDetails(String identifier, String firstName, String surname,
     interface CustomerContactDetails {
         void setContactDetails(List<ContactDetail> contactDetails);
     }
+
 }
diff --git a/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/customeractivity/CreateCustomerActivity.java b/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/customeractivity/CreateCustomerActivity.java
index 500cd8e..2721008 100644
--- a/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/customeractivity/CreateCustomerActivity.java
+++ b/app/src/main/java/org/apache/fineract/ui/online/customers/createcustomer/customeractivity/CreateCustomerActivity.java
@@ -142,6 +142,11 @@ public void setCustomerDetails(String identifier, String firstName, String surna
         customer.setMember(isMember);
     }
 
+    @Override
+    public Customer getCustomer() {
+        return customer;
+    }
+
     @Override
     public void setAddress(Address address) {
         customer.setAddress(address);
diff --git a/app/src/main/java/org/apache/fineract/ui/online/review/CreateCustomerReviewFragment.java b/app/src/main/java/org/apache/fineract/ui/online/review/CreateCustomerReviewFragment.java
new file mode 100644
index 0000000..bd80888
--- /dev/null
+++ b/app/src/main/java/org/apache/fineract/ui/online/review/CreateCustomerReviewFragment.java
@@ -0,0 +1,223 @@
+package org.apache.fineract.ui.online.review;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.CheckBox;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.stepstone.stepper.Step;
+import com.stepstone.stepper.VerificationError;
+
+import org.apache.fineract.R;
+import org.apache.fineract.data.models.customer.ContactDetail;
+import org.apache.fineract.data.models.customer.Customer;
+import org.apache.fineract.ui.base.FineractBaseFragment;
+import org.apache.fineract.ui.online.customers.createcustomer.FormCustomerDetailsFragment;
+import org.apache.fineract.ui.online.customers.createcustomer.OnNavigationBarListener;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Locale;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+
+/**
+ * @author Mohak Puri
+ *         On 26/05/18.
+ */
+
+public class CreateCustomerReviewFragment extends FineractBaseFragment implements Step {
+
+    View rootView;
+    Customer customer;
+    OnNavigationBarListener.CustomerDetails onNavigationBarListener;
+
+    @BindView(R.id.tv_account)
+    TextView tvAccount;
+
+    @BindView(R.id.tv_first_name)
+    TextView tvFirstName;
+
+    @BindView(R.id.tv_middle_name)
+    TextView tvMiddleName;
+
+    @BindView(R.id.tv_last_name)
+    TextView tvLastName;
+
+    @BindView(R.id.ll_middle_name)
+    LinearLayout llMiddleName;
+
+    @BindView(R.id.tv_dob)
+    TextView tvDob;
+
+    @BindView(R.id.cb_is_member)
+    CheckBox cbIsAMember;
+
+    @BindView(R.id.tv_street)
+    TextView tvStreet;
+
+    @BindView(R.id.tv_city)
+    TextView tvCity;
+
+    @BindView(R.id.ll_postal_code)
+    LinearLayout llPostalCode;
+
+    @BindView(R.id.tv_postal_code)
+    TextView tvPostalCode;
+
+    @BindView(R.id.tv_country)
+    TextView tvCountry;
+
+    @BindView(R.id.ll_region)
+    LinearLayout llRegion;
+
+    @BindView(R.id.tv_region)
+    TextView tvRegion;
+
+    @BindView(R.id.ll_email)
+    LinearLayout llEmail;
+
+    @BindView(R.id.tv_email)
+    TextView tvEmail;
+
+    @BindView(R.id.ll_phone)
+    LinearLayout llPhone;
+
+    @BindView(R.id.tv_phone)
+    TextView tvPhone;
+
+    @BindView(R.id.ll_mobile)
+    LinearLayout llMobile;
+
+    @BindView(R.id.tv_mobile)
+    TextView tvMobile;
+
+
+    public static CreateCustomerReviewFragment newInstance() {
+        CreateCustomerReviewFragment fragment = new CreateCustomerReviewFragment();
+        return fragment;
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+
+        if(context instanceof OnNavigationBarListener.CustomerDetails){
+            onNavigationBarListener = (OnNavigationBarListener.CustomerDetails) context;
+        }else {
+            throw new ClassCastException(context.toString()
+                    + " must implement OnNavigationBarListener.CustomerDetails");
+        }
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+
+        rootView = inflater.inflate(R.layout.fragment_create_customer_review, container, false);
+        ButterKnife.bind(this, rootView);
+        return rootView;
+    }
+
+    private void showUserInterface() {
+
+        if (customer == null) {
+            return;
+        }
+
+        tvAccount.setText(customer.getIdentifier());
+        tvFirstName.setText(customer.getGivenName());
+        tvLastName.setText(customer.getSurname());
+
+        if (customer.getMiddleName().isEmpty()) {
+            llMiddleName.setVisibility(View.GONE);
+        } else {
+            llMiddleName.setVisibility(View.VISIBLE);
+            tvMiddleName.setText(customer.getMiddleName());
+        }
+
+        setDateOfBirth();
+        cbIsAMember.setChecked(customer.getMember());
+        tvStreet.setText(customer.getAddress().getStreet());
+        tvCity.setText(customer.getAddress().getCity());
+
+        if (customer.getAddress().getPostalCode().isEmpty()) {
+            llPostalCode.setVisibility(View.GONE);
+        } else {
+            llPostalCode.setVisibility(View.VISIBLE);
+            tvPostalCode.setText(customer.getAddress().getPostalCode());
+        }
+
+        tvCountry.setText(customer.getAddress().getCountry());
+
+        if (customer.getAddress().getRegion().isEmpty()) {
+            llRegion.setVisibility(View.GONE);
+        } else {
+            llRegion.setVisibility(View.VISIBLE);
+            tvRegion.setText(customer.getAddress().getRegion());
+        }
+
+        llEmail.setVisibility(View.GONE);
+        llPhone.setVisibility(View.GONE);
+        llMobile.setVisibility(View.GONE);
+
+        for (ContactDetail detail : customer.getContactDetails()) {
+
+            if (detail.getType() == ContactDetail.Type.EMAIL) {
+                llEmail.setVisibility(View.VISIBLE);
+                tvEmail.setText(detail.getValue());
+            }
+
+            if (detail.getType() == ContactDetail.Type.PHONE) {
+                llPhone.setVisibility(View.VISIBLE);
+                tvPhone.setText(detail.getValue());
+            }
+
+            if (detail.getType() == ContactDetail.Type.MOBILE) {
+                llMobile.setVisibility(View.VISIBLE);
+                tvMobile.setText(detail.getValue());
+            }
+        }
+
+    }
+
+    private void setDateOfBirth() {
+
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.YEAR, customer.getDateOfBirth().getYear());
+        calendar.set(Calendar.MONTH, customer.getDateOfBirth().getMonth());
+        calendar.set(Calendar.DAY_OF_MONTH, customer.getDateOfBirth().getDay());
+        SimpleDateFormat sdf = new SimpleDateFormat(FormCustomerDetailsFragment.DATE_FORMAT,
+                Locale.ENGLISH);
+        tvDob.setText(sdf.format(calendar.getTime()));
+    }
+
+    @Override
+    public VerificationError verifyStep() {
+        return null;
+    }
+
+    @Override
+    public void onSelected() {
+        customer = onNavigationBarListener.getCustomer();
+        showUserInterface();
+    }
+
+    @Override
+    public void onError(@NonNull VerificationError error) {
+
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+        onNavigationBarListener = null;
+    }
+
+}
diff --git a/app/src/main/res/layout/fragment_create_customer_review.xml b/app/src/main/res/layout/fragment_create_customer_review.xml
new file mode 100644
index 0000000..8dcf217
--- /dev/null
+++ b/app/src/main/res/layout/fragment_create_customer_review.xml
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.design.widget.CoordinatorLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/cl_customer_review"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:visibility="visible">
+
+    <android.support.v4.widget.NestedScrollView
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/ncv_customer_review"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/gray_light"
+        android:visibility="visible"
+        app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+        <android.support.v7.widget.CardView
+            xmlns:android="http://schemas.android.com/apk/res/android"
+            xmlns:app="http://schemas.android.com/apk/res-auto"
+            android:id="@+id/cv_customer_review"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="@dimen/layout_padding_8dp"
+            android:layout_marginTop="@dimen/layout_padding_8dp"
+            app:cardBackgroundColor="@color/white">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                android:padding="@dimen/layout_padding_16dp">
+
+                <TextView
+                    style="@style/TextViewReview.Head"
+                    android:text="@string/required_account" />
+
+                <TextView
+                    android:id="@+id/tv_account"
+                    style="@style/TextViewReview.Input" />
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/view_line_height"
+                    android:background="@color/light_grey" />
+
+                <TextView
+                    style="@style/TextViewReview.Head"
+                    android:text="@string/required_first_name" />
+
+                <TextView
+                    android:id="@+id/tv_first_name"
+                    style="@style/TextViewReview.Input" />
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/view_line_height"
+                    android:background="@color/light_grey" />
+
+                <LinearLayout
+                    android:id="@+id/ll_middle_name"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical">
+
+                    <TextView
+                        style="@style/TextViewReview.Head"
+                        android:text="@string/optional_middle_name" />
+
+                    <TextView
+                        android:id="@+id/tv_middle_name"
+                        style="@style/TextViewReview.Input" />
+
+                    <View
+                        android:layout_width="match_parent"
+                        android:layout_height="@dimen/view_line_height"
+                        android:background="@color/light_grey" />
+
+                </LinearLayout>
+
+                <TextView
+                    style="@style/TextViewReview.Head"
+                    android:text="@string/required_last_name" />
+
+                <TextView
+                    android:id="@+id/tv_last_name"
+                    style="@style/TextViewReview.Input" />
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/view_line_height"
+                    android:background="@color/light_grey" />
+
+                <TextView
+                    style="@style/TextViewReview.Head"
+                    android:text="@string/required_date_of_birth" />
+
+                <TextView
+                    android:id="@+id/tv_dob"
+                    style="@style/TextViewReview.Input"
+                    android:drawableLeft="@drawable/ic_cake_black_24dp"
+                    android:drawablePadding="@dimen/layout_padding_16dp"
+                    android:drawableStart="@drawable/ic_cake_black_24dp" />
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/view_line_height"
+                    android:layout_marginBottom="@dimen/layout_padding_8dp"
+                    android:background="@color/light_grey" />
+
+                <CheckBox
+                    android:id="@+id/cb_is_member"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="@dimen/layout_padding_8dp"
+                    android:clickable="false"
+                    android:paddingLeft="@dimen/layout_padding_8dp"
+                    android:paddingRight="@dimen/layout_padding_8dp"
+                    android:paddingStart="@dimen/layout_padding_8dp"
+                    android:text="@string/is_member" />
+
+                <TextView
+                    style="@style/TextViewReview.Head"
+                    android:text="@string/required_street" />
+
+                <TextView
+                    android:id="@+id/tv_street"
+                    style="@style/TextViewReview.Input" />
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/view_line_height"
+                    android:background="@color/light_grey" />
+
+                <TextView
+                    style="@style/TextViewReview.Head"
+                    android:text="@string/required_city" />
+
+                <TextView
+                    android:id="@+id/tv_city"
+                    style="@style/TextViewReview.Input" />
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/view_line_height"
+                    android:background="@color/light_grey" />
+
+                <LinearLayout
+                    android:id="@+id/ll_postal_code"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical">
+
+                    <TextView
+                        style="@style/TextViewReview.Head"
+                        android:text="@string/optional_postal_code" />
+
+                    <TextView
+                        android:id="@+id/tv_postal_code"
+                        style="@style/TextViewReview.Input" />
+
+                    <View
+                        android:layout_width="match_parent"
+                        android:layout_height="@dimen/view_line_height"
+                        android:background="@color/light_grey" />
+
+                </LinearLayout>
+
+                <TextView
+                    style="@style/TextViewReview.Head"
+                    android:text="@string/required_country" />
+
+                <TextView
+                    android:id="@+id/tv_country"
+                    style="@style/TextViewReview.Input" />
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/view_line_height"
+                    android:background="@color/light_grey" />
+
+                <LinearLayout
+                    android:id="@+id/ll_region"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical">
+
+                    <TextView
+                        style="@style/TextViewReview.Head"
+                        android:text="@string/optional_region" />
+
+                    <TextView
+                        android:id="@+id/tv_region"
+                        style="@style/TextViewReview.Input" />
+
+                    <View
+                        android:layout_width="match_parent"
+                        android:layout_height="@dimen/view_line_height"
+                        android:background="@color/light_grey" />
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/ll_email"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical">
+
+                    <TextView
+                        style="@style/TextViewReview.Head"
+                        android:text="@string/optional_email" />
+
+                    <TextView
+                        android:id="@+id/tv_email"
+                        style="@style/TextViewReview.Input" />
+
+                    <View
+                        android:layout_width="match_parent"
+                        android:layout_height="@dimen/view_line_height"
+                        android:background="@color/light_grey" />
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/ll_phone"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical">
+
+                    <TextView
+                        style="@style/TextViewReview.Head"
+                        android:text="@string/optional_phone" />
+
+                    <TextView
+                        android:id="@+id/tv_phone"
+                        style="@style/TextViewReview.Input" />
+
+                    <View
+                        android:layout_width="match_parent"
+                        android:layout_height="@dimen/view_line_height"
+                        android:background="@color/light_grey" />
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/ll_mobile"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical">
+
+                    <TextView
+                        style="@style/TextViewReview.Head"
+                        android:text="@string/optional_mobile" />
+
+                    <TextView
+                        android:id="@+id/tv_mobile"
+                        style="@style/TextViewReview.Input" />
+
+                    <View
+                        android:layout_width="match_parent"
+                        android:layout_height="@dimen/view_line_height"
+                        android:background="@color/light_grey" />
+
+                </LinearLayout>
+
+            </LinearLayout>
+        </android.support.v7.widget.CardView>
+
+    </android.support.v4.widget.NestedScrollView>
+
+</android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 05edc43..43d83a8 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -22,10 +22,11 @@
     <dimen name="header_view_end_margin_right">14dp</dimen>
     <dimen name="header_view_start_margin_bottom">14dp</dimen>
 
-
+    <dimen name="view_line_height">1dp</dimen>
 
     <dimen name="text_size_12sp">12sp</dimen>
     <dimen name="text_size_14sp">14sp</dimen>
+    <dimen name="text_size_18sp">18sp</dimen>
     <dimen name="text_size_20sp">20sp</dimen>
     <!-- Dimen values for text size -->
     <dimen name="text_headline">24sp</dimen>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 965f297..2c922eb 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -363,6 +363,7 @@
         <item>Customer details</item>
         <item>Customer address</item>
         <item>Customer contact</item>
+        <item>Review</item>
     </string-array>
 
     <string-array name="create_deposit_steps">
@@ -440,4 +441,5 @@
         <item>29.</item>
         <item>30.</item>
     </string-array>
+
 </resources>
diff --git a/app/src/main/res/values/styles_text.xml b/app/src/main/res/values/styles_text.xml
new file mode 100755
index 0000000..40b7cdb
--- /dev/null
+++ b/app/src/main/res/values/styles_text.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+  ~ This project is licensed under the open source MPL V2.
+  ~ See https://github.com/openMF/android-client/blob/master/LICENSE.md
+  -->
+
+<resources>
+
+    <style name="TextViewReview" parent="TextAppearance.Design.Hint">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+    </style>
+
+    <style name="TextViewReview.Head">
+        <item name="android:paddingTop">@dimen/layout_padding_16dp</item>
+    </style>
+
+    <style name="TextViewReview.Input">
+        <item name="android:textSize">@dimen/text_size_18sp</item>
+        <item name="android:textColor">@color/black</item>
+        <item name="android:paddingTop">@dimen/layout_padding_8dp</item>
+    </style>
+
+</resources>
\ No newline at end of file
diff --git a/app/src/main/resources/authentication.json b/app/src/main/resources/authentication.json
new file mode 100644
index 0000000..9a26afb
--- /dev/null
+++ b/app/src/main/resources/authentication.json
@@ -0,0 +1,7 @@
+{
+  "tokenType": "tokenType",
+  "accessToken": "accessToken",
+  "accessTokenExpiration": "accessTokenExpiration",
+  "refreshTokenExpiration": "refreshTokenExpiration",
+  "passwordExpiration": "passwordExpiration"
+}
\ No newline at end of file
diff --git a/app/src/main/resources/command.json b/app/src/main/resources/command.json
new file mode 100644
index 0000000..079a8ad
--- /dev/null
+++ b/app/src/main/resources/command.json
@@ -0,0 +1,8 @@
+[
+  {
+    "action": "ACTIVATE",
+    "comment": "comment",
+    "createdOn": "createdOn",
+    "createdBy": "createdBy"
+  }
+]
\ No newline at end of file
diff --git a/app/src/main/resources/customer.json b/app/src/main/resources/customer.json
new file mode 100644
index 0000000..837a272
--- /dev/null
+++ b/app/src/main/resources/customer.json
@@ -0,0 +1,46 @@
+{
+  "identifier": "identifier",
+  "type": "type",
+  "givenName": "givenName",
+  "middleName": "middleName",
+  "surname": "surname",
+  "dateOfBirth": {
+    "year": 1985,
+    "month": 11,
+    "day": 27
+  },
+  "member": false,
+  "accountBeneficiary": "accountBeneficiary",
+  "referenceCustomer": "referenceCustomer",
+  "assignedOffice": "assignedOffice",
+  "assignedEmployee": "assignedEmployee",
+  "address": {
+    "street": "street",
+    "city": "city",
+    "region": "region",
+    "postalCode": "postalCode",
+    "countryCode": "countryCode",
+    "country": "country"
+  },
+  "contactDetails": [
+    {
+      "type": "EMAIL",
+      "group": "BUSINESS",
+      "value": "value",
+      "preferenceLevel": 1,
+      "validated": false
+    },
+    {
+      "type": "EMAIL",
+      "group": "BUSINESS",
+      "value": "value",
+      "preferenceLevel": 1,
+      "validated": false
+    }
+  ],
+  "currentState": "ACTIVE",
+  "createdBy": "createdBy",
+  "createdOn": "createdOn",
+  "lastModifiedBy": "lastModifiedBy",
+  "lastModifiedOn": "lastModifiedOn"
+}
\ No newline at end of file
diff --git a/app/src/main/resources/customerPage.json b/app/src/main/resources/customerPage.json
new file mode 100644
index 0000000..ec149ea
--- /dev/null
+++ b/app/src/main/resources/customerPage.json
@@ -0,0 +1,52 @@
+{
+  "customers": [
+    {
+      "identifier": "identifier",
+      "type": "type",
+      "givenName": "givenName",
+      "middleName": "middleName",
+      "surname": "surname",
+      "dateOfBirth": {
+        "year": 1985,
+        "month": 11,
+        "day": 27
+      },
+      "member": false,
+      "accountBeneficiary": "accountBeneficiary",
+      "referenceCustomer": "referenceCustomer",
+      "assignedOffice": "assignedOffice",
+      "assignedEmployee": "assignedEmployee",
+      "address": {
+        "street": "street",
+        "city": "city",
+        "region": "region",
+        "postalCode": "postalCode",
+        "countryCode": "countryCode",
+        "country": "country"
+      },
+      "contactDetails": [
+        {
+          "type": "EMAIL",
+          "group": "BUSINESS",
+          "value": "value",
+          "preferenceLevel": 1,
+          "validated": false
+        },
+        {
+          "type": "EMAIL",
+          "group": "BUSINESS",
+          "value": "value",
+          "preferenceLevel": 1,
+          "validated": false
+        }
+      ],
+      "currentState": "ACTIVE",
+      "createdBy": "createdBy",
+      "createdOn": "createdOn",
+      "lastModifiedBy": "lastModifiedBy",
+      "lastModifiedOn": "lastModifiedOn"
+    }
+  ],
+  "totalPages": 1,
+  "totalElements": 1
+}
\ No newline at end of file
diff --git a/app/src/main/resources/depositAccount.json b/app/src/main/resources/depositAccount.json
new file mode 100644
index 0000000..ed7eff5
--- /dev/null
+++ b/app/src/main/resources/depositAccount.json
@@ -0,0 +1,13 @@
+[
+  {
+    "customerIdentifier": "customerIdentifier",
+    "productIdentifier": "productIdentifier",
+    "accountIdentifier": "accountIdentifier",
+    "beneficiaries": [
+      "beneficiaries:1",
+      "beneficiaries:2"
+    ],
+    "state": "CREATED",
+    "balance": 245.50
+  }
+]
\ No newline at end of file
diff --git a/app/src/main/resources/identification.json b/app/src/main/resources/identification.json
new file mode 100644
index 0000000..25f163d
--- /dev/null
+++ b/app/src/main/resources/identification.json
@@ -0,0 +1,16 @@
+[
+  {
+    "type": "type",
+    "number": "number",
+    "expirationDate": {
+      "year": 1985,
+      "month": 11,
+      "day": 27
+    },
+    "issuer": "issuer",
+    "createdBy": "createdBy",
+    "createdOn": "createdOn",
+    "lastModifiedBy": "lastModifiedBy",
+    "lastModifiedOn": "lastModifiedOn"
+  }
+]
\ No newline at end of file
diff --git a/app/src/main/resources/loanAccount.json b/app/src/main/resources/loanAccount.json
new file mode 100644
index 0000000..c619478
--- /dev/null
+++ b/app/src/main/resources/loanAccount.json
@@ -0,0 +1,55 @@
+{
+  "identifier": "identifier",
+  "productIdentifier": "productIdentifier",
+  "parameters": "{\"customerIdentifier\":\"customerIdentifier\",\"maximumBalance\": 343.45,\"termRange\": {\"temporalUnit\": \"WEEKS\", \"maximum\": 45.45 }, \"paymentCycle\": {\"temporalUnit\": \"WEEKS\",\"period\": 1,\"alignmentDay\": 1,\"alignmentWeek\": 1,\"alignmentMonth\": 1},\"creditWorthinessSnapshots\":[{\"forCustomer\":\"forCustomer\"}]}",
+  "accountAssignments": [
+    {
+      "designator": "designator",
+      "accountIdentifier": "accountIdentifier",
+      "ledgerIdentifier": "ledgerIdentifier"
+    }
+  ],
+  "currentState": "CREATED",
+  "createdOn": "createdOn",
+  "createdBy": "createdBy",
+  "lastModifiedOn": "lastModifiedOn",
+  "lastModifiedBy": "lastModifiedBy",
+  "loanParameters": {
+    "customerIdentifier": "customerIdentifier",
+    "creditWorthinessSnapshots": [
+      {
+        "forCustomer": "forCustomer",
+        "incomeSources": [
+          {
+            "description": "description",
+            "amount": 45.45
+          }
+        ],
+        "assets": [
+          {
+            "description": "description",
+            "amount": 45.45
+          }
+        ],
+        "debts": [
+          {
+            "description": "description",
+            "amount": 45.45
+          }
+        ]
+      }
+    ],
+    "maximumBalance": 4500.50,
+    "termRange": {
+      "temporalUnit": "WEEKS",
+      "maximum": 45
+    },
+    "paymentCycle": {
+      "temporalUnit": "WEEKS",
+      "period": 1,
+      "alignmentDay": 1,
+      "alignmentWeek": 1,
+      "alignmentMonth": 1
+    }
+  }
+}
\ No newline at end of file
diff --git a/app/src/main/resources/loanAccountPage.json b/app/src/main/resources/loanAccountPage.json
new file mode 100644
index 0000000..ba5d4b2
--- /dev/null
+++ b/app/src/main/resources/loanAccountPage.json
@@ -0,0 +1,60 @@
+{
+  "elements": [
+    {
+      "identifier": "identifier",
+      "productIdentifier": "productIdentifier",
+      "parameters" : "{}",
+      "accountAssignments": [
+        {
+          "designator": "designator",
+          "accountIdentifier": "accountIdentifier",
+          "ledgerIdentifier": "ledgerIdentifier"
+        }
+      ],
+      "currentState": "CREATED",
+      "createdOn": "createdOn",
+      "createdBy": "createdBy",
+      "lastModifiedOn": "lastModifiedOn",
+      "lastModifiedBy": "lastModifiedBy",
+      "loanParameters": {
+        "customerIdentifier": "customerIdentifier",
+        "creditWorthinessSnapshots": [
+          {
+            "forCustomer": "forCustomer",
+            "incomeSources": [
+              {
+                "description": "description",
+                "amount": 45.45
+              }
+            ],
+            "assets": [
+              {
+                "description": "description",
+                "amount": 45.45
+              }
+            ],
+            "debts": [
+              {
+                "description": "description",
+                "amount": 45.45
+              }
+            ]
+          }
+        ],
+        "maximumBalance": 4500.50,
+        "termRange": {
+          "temporalUnit": "WEEKS",
+          "maximum": 45
+        },
+        "paymentCycle": {
+          "temporalUnit": "WEEKS",
+          "period": 1,
+          "alignmentDay": 1,
+          "alignmentWeek": 1,
+          "alignmentMonth": 1
+        }
+      }
+    }
+  ],
+  "totalElements": 1
+}
\ No newline at end of file
diff --git a/app/src/main/resources/plannedPaymentPage.json b/app/src/main/resources/plannedPaymentPage.json
new file mode 100644
index 0000000..5ee08da
--- /dev/null
+++ b/app/src/main/resources/plannedPaymentPage.json
@@ -0,0 +1,23 @@
+{
+  "chargeNames": [
+    {
+      "identifier": "identifier",
+      "name": "name"
+    }
+  ],
+  "elements": [
+    {
+      "interestRate": 5.10,
+      "costComponents": [
+        {
+          "chargeIdentifier": "chargeIdentifier",
+          "amount": 4500.75
+        }
+      ],
+      "remainingPrincipal": 3400,
+      "data": "date"
+    }
+  ],
+  "totalPages": 1,
+  "totalElements": 1
+}
\ No newline at end of file
diff --git a/app/src/main/resources/role.json b/app/src/main/resources/role.json
new file mode 100644
index 0000000..8ac814f
--- /dev/null
+++ b/app/src/main/resources/role.json
@@ -0,0 +1,28 @@
+[
+  {
+    "identifier": "identifier1",
+    "permissions": [
+      {
+        "permittableEndpointGroupIdentifier": "permittableEndpointGroupIdentifier",
+        "allowedOperations": ["READ", "DELETE"]
+      },
+      {
+        "permittableEndpointGroupIdentifier": "permittableEndpointGroupIdentifier",
+        "allowedOperations": ["READ", "DELETE"]
+      }
+    ]
+  },
+  {
+    "identifier": "identifier2",
+    "permissions": [
+      {
+        "permittableEndpointGroupIdentifier": "permittableEndpointGroupIdentifier",
+        "allowedOperations": ["READ", "DELETE"]
+      },
+      {
+        "permittableEndpointGroupIdentifier": "permittableEndpointGroupIdentifier",
+        "allowedOperations": ["READ", "DELETE"]
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/app/src/main/resources/scanCard.json b/app/src/main/resources/scanCard.json
new file mode 100644
index 0000000..c4eab82
--- /dev/null
+++ b/app/src/main/resources/scanCard.json
@@ -0,0 +1,6 @@
+[
+  {
+    "description": "description",
+    "identifier": "identifier"
+  }
+]
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 57bcbc9..e306801 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,6 +1,7 @@
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 
 buildscript {
+    ext.kotlinVersion = '1.2.41'
     repositories {
         google()
         jcenter()
@@ -9,6 +10,7 @@ buildscript {
     dependencies {
         classpath 'com.android.tools.build:gradle:3.0.1'
         classpath 'io.fabric.tools:gradle:1.+'
+        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
     }


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services