You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ra...@apache.org on 2018/06/03 04:12:10 UTC

[fineract-cn-mobile] branch development updated: refractor: Convert java models to kotlin data models

This is an automated email from the ASF dual-hosted git repository.

rajanmaurya154 pushed a commit to branch development
in repository https://gitbox.apache.org/repos/asf/fineract-cn-mobile.git


The following commit(s) were added to refs/heads/development by this push:
     new 014e03d  refractor: Convert java models to kotlin data models
014e03d is described below

commit 014e03dc6b624669dd8961df67ae4c5515c68448
Author: dilpreet96 <di...@gmail.com>
AuthorDate: Sat May 19 18:05:13 2018 +0530

    refractor: Convert java models to kotlin data models
---
 .DS_Store                                          | Bin 0 -> 6148 bytes
 app/build.gradle                                   |  14 +-
 .../fineract/data/models/Authentication.java       | 107 ---------
 .../apache/fineract/data/models/Authentication.kt  |  19 ++
 .../org/apache/fineract/data/models/State.java     |  13 -
 .../java/org/apache/fineract/data/models/State.kt  |  13 +
 .../fineract/data/models/customer/Address.java     | 113 ---------
 .../fineract/data/models/customer/Address.kt       |  15 ++
 .../fineract/data/models/customer/Command.java     |  65 -----
 .../fineract/data/models/customer/Command.kt       |  28 +++
 .../data/models/customer/ContactDetail.java        | 117 ---------
 .../fineract/data/models/customer/ContactDetail.kt |  37 +++
 .../fineract/data/models/customer/Country.java     |  44 ----
 .../fineract/data/models/customer/Country.kt       |  14 ++
 .../fineract/data/models/customer/Customer.java    | 266 ---------------------
 .../fineract/data/models/customer/Customer.kt      |  53 ++++
 .../data/models/customer/CustomerPage.java         |  38 ---
 .../fineract/data/models/customer/CustomerPage.kt  |   9 +
 .../fineract/data/models/customer/DateOfBirth.java |  70 ------
 .../fineract/data/models/customer/DateOfBirth.kt   |  12 +
 .../data/models/customer/Translations.java         |  15 --
 .../fineract/data/models/customer/Translations.kt  |  15 ++
 .../customer/identification/ExpirationDate.java    |  75 ------
 .../customer/identification/ExpirationDate.kt      |  16 ++
 .../customer/identification/Identification.java    | 150 ------------
 .../customer/identification/Identification.kt      |  22 ++
 .../models/customer/identification/ScanCard.java   |  67 ------
 .../models/customer/identification/ScanCard.kt     |  16 ++
 .../fineract/data/models/deposit/Charge.java       |  78 ------
 .../apache/fineract/data/models/deposit/Charge.kt  |  12 +
 .../fineract/data/models/deposit/Currency.java     |  45 ----
 .../fineract/data/models/deposit/Currency.kt       |  10 +
 .../data/models/deposit/DepositAccount.java        | 133 -----------
 .../fineract/data/models/deposit/DepositAccount.kt |  45 ++++
 .../data/models/deposit/InterestPayable.java       |  13 -
 .../data/models/deposit/InterestPayable.kt         |  13 +
 .../data/models/deposit/ProductDefinition.java     | 146 -----------
 .../data/models/deposit/ProductDefinition.kt       |  30 +++
 .../apache/fineract/data/models/deposit/Term.java  |  43 ----
 .../apache/fineract/data/models/deposit/Term.kt    |  34 +++
 .../fineract/data/models/deposit/TimeUnit.java     |   9 -
 .../fineract/data/models/deposit/TimeUnit.kt       |   9 +
 .../apache/fineract/data/models/deposit/Type.java  |  11 -
 .../apache/fineract/data/models/deposit/Type.kt    |  11 +
 .../fineract/data/models/error/MifosError.java     | 107 ---------
 .../fineract/data/models/error/MifosError.kt       |  20 ++
 .../data/models/loan/AccountAssignment.java        |  45 ----
 .../fineract/data/models/loan/AccountAssignment.kt |  13 +
 .../data/models/loan/CreditWorthinessFactor.java   |  64 -----
 .../data/models/loan/CreditWorthinessFactor.kt     |  16 ++
 .../data/models/loan/CreditWorthinessSnapshot.java |  94 --------
 .../data/models/loan/CreditWorthinessSnapshot.kt   |  21 ++
 .../fineract/data/models/loan/LoanAccount.java     | 136 -----------
 .../fineract/data/models/loan/LoanAccount.kt       |  64 +++++
 .../fineract/data/models/loan/LoanAccountPage.java |  52 ----
 .../fineract/data/models/loan/LoanAccountPage.kt   |  14 ++
 .../fineract/data/models/loan/LoanParameters.java  |  69 ------
 .../fineract/data/models/loan/LoanParameters.kt    |  17 ++
 .../fineract/data/models/loan/PaymentCycle.java    |  55 -----
 .../fineract/data/models/loan/PaymentCycle.kt      |  16 ++
 .../fineract/data/models/loan/TermRange.java       |  32 ---
 .../apache/fineract/data/models/loan/TermRange.kt  |  12 +
 .../fineract/data/models/payment/ChargeName.java   |  28 ---
 .../fineract/data/models/payment/ChargeName.kt     |  13 +
 .../data/models/payment/CostComponent.java         |  28 ---
 .../fineract/data/models/payment/CostComponent.kt  |  13 +
 .../data/models/payment/PlannedPayment.java        |  49 ----
 .../fineract/data/models/payment/PlannedPayment.kt |  15 ++
 .../data/models/payment/PlannedPaymentPage.java    |  50 ----
 .../data/models/payment/PlannedPaymentPage.kt      |  15 ++
 .../fineract/data/models/product/BalanceRange.java |  28 ---
 .../fineract/data/models/product/BalanceRange.kt   |  13 +
 .../data/models/product/InterestBasis.java         |  12 -
 .../fineract/data/models/product/InterestBasis.kt  |  12 +
 .../data/models/product/InterestRange.java         |  28 ---
 .../fineract/data/models/product/InterestRange.kt  |  13 +
 .../fineract/data/models/product/Product.java      | 161 -------------
 .../apache/fineract/data/models/product/Product.kt |  32 +++
 .../fineract/data/models/product/ProductPage.java  |  39 ---
 .../fineract/data/models/product/ProductPage.kt    |  14 ++
 .../rolesandpermission/AllowedOperation.java       |  19 --
 .../models/rolesandpermission/AllowedOperation.kt  |  16 ++
 .../data/models/rolesandpermission/Permission.java |  73 ------
 .../data/models/rolesandpermission/Permission.kt   |  19 ++
 .../data/models/rolesandpermission/Role.java       |  69 ------
 .../data/models/rolesandpermission/Role.kt         |  16 ++
 build.gradle                                       |   2 +
 87 files changed, 832 insertions(+), 2857 deletions(-)

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..8c5b410 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'
 
@@ -54,6 +56,11 @@ android {
     packagingOptions {
         exclude 'META-INF/rxjava.properties'
     }
+
+    //for @parcelize extension
+    androidExtensions {
+        experimental = true
+    }
 }
 
 dependencies {
@@ -70,6 +77,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 +172,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/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/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
     }

-- 
To stop receiving notification emails like this one, please contact
rajanmaurya154@apache.org.