diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/GroupSavingsIndividualMonitoringAccountData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/GroupSavingsIndividualMonitoringAccountData.java
index c7d861c..0a22d4e 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/GroupSavingsIndividualMonitoringAccountData.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/GroupSavingsIndividualMonitoringAccountData.java
@@ -20,7 +20,11 @@
 package org.apache.fineract.portfolio.savings.data;
 
 import java.math.BigDecimal;
+import lombok.Builder;
+import lombok.Getter;
 
+@Getter
+@Builder
 public final class GroupSavingsIndividualMonitoringAccountData {
 
     private final BigDecimal gsimId;
@@ -42,80 +46,4 @@
     private final Long childAccountsCount;
 
     private final String savingsStatus;
-
-    private GroupSavingsIndividualMonitoringAccountData(final BigDecimal glimId, final BigDecimal groupId, final BigDecimal clientId,
-            final String accountNumber, final BigDecimal childAccountId, final String childAccountNumber, final BigDecimal childDeposit,
-            final BigDecimal parentDeposit, final Long childAccountsCount, final String savingsStatus) {
-        this.gsimId = glimId;
-        this.groupId = groupId;
-        this.clientId = clientId;
-        this.accountNumber = accountNumber;
-        this.childAccountId = childAccountId;
-        this.childAccountNumber = childAccountNumber;
-        this.childDeposit = childDeposit;
-        this.parentDeposit = parentDeposit;
-        this.childAccountsCount = childAccountsCount;
-        this.savingsStatus = savingsStatus;
-    }
-
-    public static GroupSavingsIndividualMonitoringAccountData getInstance(final BigDecimal glimId, final BigDecimal groupId,
-            final String accountNumber, final String childAccountNumber, final BigDecimal childDeposit, final BigDecimal parentDeposit,
-            final Long childAccountsCount, final String savingsStatus) {
-        return new GroupSavingsIndividualMonitoringAccountData(glimId, groupId, null, accountNumber, null, childAccountNumber, childDeposit,
-                parentDeposit, childAccountsCount, savingsStatus);
-    }
-
-    public static GroupSavingsIndividualMonitoringAccountData getInstance1(final BigDecimal glimId, final BigDecimal groupId,
-            final String accountNumber, final BigDecimal parentDeposit, final String savingsStatus) {
-        return new GroupSavingsIndividualMonitoringAccountData(glimId, groupId, null, accountNumber, null, null, null, parentDeposit, null,
-                savingsStatus);
-    }
-
-    public static GroupSavingsIndividualMonitoringAccountData getInstance2(final BigDecimal glimId, final BigDecimal groupId,
-            final BigDecimal clientId, final String accountNumber, final BigDecimal childAccountId, final String childAccountNumber,
-            final BigDecimal childDeposit, final BigDecimal parentDeposit, final Long childAccountsCount, final String savingsStatus) {
-        return new GroupSavingsIndividualMonitoringAccountData(glimId, groupId, clientId, accountNumber, childAccountId, childAccountNumber,
-                childDeposit, parentDeposit, childAccountsCount, savingsStatus);
-    }
-
-    public BigDecimal getGsimId() {
-        return gsimId;
-    }
-
-    public BigDecimal getGroupId() {
-        return groupId;
-    }
-
-    public BigDecimal getClientId() {
-        return clientId;
-    }
-
-    public String getAccountNumber() {
-        return accountNumber;
-    }
-
-    public BigDecimal getChildAccountId() {
-        return childAccountId;
-    }
-
-    public String getChildAccountNumber() {
-        return childAccountNumber;
-    }
-
-    public BigDecimal getChildDeposit() {
-        return childDeposit;
-    }
-
-    public BigDecimal getParentDeposit() {
-        return parentDeposit;
-    }
-
-    public Long getChildAccountsCount() {
-        return childAccountsCount;
-    }
-
-    public String getSavingsStatus() {
-        return savingsStatus;
-    }
-
 }
diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java
index dbb1138..7e63c06 100644
--- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java
@@ -73,8 +73,11 @@
             final BigDecimal parentBalance = rs.getBigDecimal("parentBalance");
             final BigDecimal childBalance = rs.getBigDecimal("childBalance");
             final String savingsStatus = SavingsAccountStatusType.fromInt((int) rs.getLong("savingsStatus")).toString();
-            return GroupSavingsIndividualMonitoringAccountData.getInstance2(gsimId, groupId, clientId, accountNumber, childAccountId,
-                    childAccountNumber, parentBalance, childBalance, childAccountsCount, savingsStatus);
+
+            return GroupSavingsIndividualMonitoringAccountData.builder().gsimId(gsimId).groupId(groupId).clientId(clientId)
+                    .accountNumber(accountNumber).childAccountId(childAccountId).childAccountNumber(childAccountNumber)
+                    .childDeposit(parentBalance).parentDeposit(childBalance).childAccountsCount(childAccountsCount)
+                    .savingsStatus(savingsStatus).build();
         }
     }
 
@@ -99,8 +102,8 @@
 
             final String loanStatus = LoanStatus.fromInt((int) rs.getLong("savingsStatus")).toString();
 
-            return GroupSavingsIndividualMonitoringAccountData.getInstance1(glimId, groupId, accountNumber, parentDeposit, loanStatus);
-
+            return GroupSavingsIndividualMonitoringAccountData.builder().gsimId(glimId).groupId(groupId).accountNumber(accountNumber)
+                    .parentDeposit(parentDeposit).savingsStatus(loanStatus).build();
         }
     }
 
