diff --git a/README.md b/README.md
index 0d097d2..edca939 100644
--- a/README.md
+++ b/README.md
@@ -22,3 +22,20 @@
 
 ## License
 See [LICENSE](LICENSE) file.
+
+## Usage
+
+### Generate and print RSA keys
+
+You can use this library to generate and print RSA keys.
+
+You can either generate application-<env>.properties file for Spring applications like this:
+
+`java -cp build/libs/lang-0.1.0-BUILD-SNAPSHOT.jar  org.apache.fineract.cn.lang.security.RsaKeyPairFactory SPRING > application-dev.properties`
+
+Or you can generate them and import as operation system variables (Unix):
+```
+java -cp build/libs/lang-0.1.0-BUILD-SNAPSHOT.jar  org.apache.fineract.cn.lang.security.RsaKeyPairFactory UNIX > env.vars.txt
+source env.vars.txt
+echo $PUBLIC_KEY_TIMESTAMP
+```
diff --git a/src/main/java/org/apache/fineract/cn/lang/DateConverter.java b/src/main/java/org/apache/fineract/cn/lang/DateConverter.java
index a378a64..bd200a9 100644
--- a/src/main/java/org/apache/fineract/cn/lang/DateConverter.java
+++ b/src/main/java/org/apache/fineract/cn/lang/DateConverter.java
@@ -28,19 +28,16 @@
 public interface DateConverter {
   @Nonnull
   static Long toEpochMillis(@Nonnull final LocalDateTime localDateTime) {
-    Assert.notNull(localDateTime, "LocalDateTime must be given.");
     return localDateTime.toInstant(ZoneOffset.UTC).toEpochMilli();
   }
 
   @Nonnull
   static Long toEpochDay(@Nonnull final LocalDate localDate) {
-    Assert.notNull(localDate, "LocalDate must be given.");
     return localDate.toEpochDay();
   }
 
   @Nonnull
   static LocalDateTime fromEpochMillis(@Nonnull final Long epochMillis) {
-    Assert.notNull(epochMillis, "Epoch milliseconds must be given.");
     return LocalDateTime.from(Instant.ofEpochMilli(epochMillis).atZone(ZoneOffset.UTC));
   }
 
@@ -51,19 +48,16 @@
 
   @Nonnull
   static String toIsoString(@Nonnull final LocalDateTime localDateTime) {
-    Assert.notNull(localDateTime, "LocalDateTime must be given.");
     return localDateTime.format(DateTimeFormatter.ISO_DATE_TIME) + "Z";
   }
 
   @Nonnull
   static LocalDateTime fromIsoString(@Nonnull final String isoDateTimeString) {
-    Assert.notNull(isoDateTimeString, "ISO date time must be given.");
     return LocalDateTime.from(Instant.parse(isoDateTimeString).atZone(ZoneOffset.UTC));
   }
 
   @Nonnull
   static LocalDate dateFromIsoString(@Nonnull final String isoDateString) {
-    Assert.notNull(isoDateString, "ISO date time must be given.");
     final int zIndex = isoDateString.indexOf("Z");
     final String shortenedString = isoDateString.substring(0, zIndex);
     return LocalDate.from(DateTimeFormatter.ISO_LOCAL_DATE.parse(shortenedString));
@@ -71,13 +65,11 @@
 
   @Nonnull
   static String toIsoString(@Nonnull final LocalDate localDate) {
-    Assert.notNull(localDate, "LocalDateTime must be given.");
     return localDate.format(DateTimeFormatter.ISO_DATE) + "Z";
   }
 
   @Nonnull
   static LocalDate toLocalDate(@Nonnull final LocalDateTime localDateTime) {
-    Assert.notNull(localDateTime, "LocalDateTime must be given.");
     return localDateTime.toLocalDate();
   }
 }
diff --git a/src/main/java/org/apache/fineract/cn/lang/DateRange.java b/src/main/java/org/apache/fineract/cn/lang/DateRange.java
index 789eff7..adce114 100644
--- a/src/main/java/org/apache/fineract/cn/lang/DateRange.java
+++ b/src/main/java/org/apache/fineract/cn/lang/DateRange.java
@@ -40,8 +40,6 @@
   private final @Nonnull LocalDate end;
 
   public DateRange(final @Nonnull LocalDate start, final @Nonnull LocalDate end) {
-    Assert.notNull(start, "Range start must be given.");
-    Assert.notNull(start, "Range end must be given.");
     this.start = start;
     this.end = end;
   }
@@ -84,4 +82,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}
diff --git a/src/main/java/org/apache/fineract/cn/lang/TenantContextHolder.java b/src/main/java/org/apache/fineract/cn/lang/TenantContextHolder.java
index f90aab0..c9f8c15 100644
--- a/src/main/java/org/apache/fineract/cn/lang/TenantContextHolder.java
+++ b/src/main/java/org/apache/fineract/cn/lang/TenantContextHolder.java
@@ -42,7 +42,6 @@
   }
 
   public static void setIdentifier(@Nonnull final String identifier) {
-    Assert.notNull(identifier, "A tenant identifier must be given.");
     Assert.hasLength(identifier, "A tenant identifier must have at least one character.");
     Assert.isNull(TenantContextHolder.THREAD_LOCAL.get(), "Tenant identifier already set.");
     TenantContextHolder.THREAD_LOCAL.set(identifier);
diff --git a/src/main/java/org/apache/fineract/cn/lang/security/RsaKeyPairFactory.java b/src/main/java/org/apache/fineract/cn/lang/security/RsaKeyPairFactory.java
index 4b816ed..d76bb2f 100644
--- a/src/main/java/org/apache/fineract/cn/lang/security/RsaKeyPairFactory.java
+++ b/src/main/java/org/apache/fineract/cn/lang/security/RsaKeyPairFactory.java
@@ -39,6 +39,26 @@
   private RsaKeyPairFactory() {
   }
 
+  public static void main(String[] args) {
+    KeyPairHolder keyPair = RsaKeyPairFactory.createKeyPair();
+
+    String style = (args != null && args.length > 0) ?args[0] :"";
+    if ("SPRING".equalsIgnoreCase(style)) {
+      System.out.println("system.publicKey.exponent=" + keyPair.getPublicKeyExp());
+      System.out.println("system.publicKey.modulus=" + keyPair.getPublicKeyMod());
+      System.out.println("system.publicKey.timestamp=" + keyPair.getTimestamp());
+      System.out.println("system.privateKey.modulus=" + keyPair.getPrivateKeyMod());
+      System.out.println("system.privateKey.exponent=" + keyPair.getPrivateKeyExp());
+    }
+    else if ("UNIX".equalsIgnoreCase(style)) {
+      System.out.println("PUBLIC_KEY_EXPONENT=" + keyPair.getPublicKeyExp());
+      System.out.println("PUBLIC_KEY_MODULUS=" + keyPair.getPublicKeyMod());
+      System.out.println("PUBLIC_KEY_TIMESTAMP=" + keyPair.getTimestamp());
+      System.out.println("PRIVATE_KEY_MODULUS=" + keyPair.getPrivateKeyMod());
+      System.out.println("PRIVATE_KEY_EXPONENT=" + keyPair.getPrivateKeyExp());
+    }
+  }
+
   public static KeyPairHolder createKeyPair() {
     try {
       final KeyFactory keyFactory = KeyFactory.getInstance("RSA");
@@ -116,4 +136,4 @@
       return privateKey.getPrivateExponent();
     }
   }
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/apache/fineract/cn/lang/security/RsaKeyPairFactoryTest.java b/src/test/java/org/apache/fineract/cn/lang/security/RsaKeyPairFactoryTest.java
index 3d104c7..52a60f9 100644
--- a/src/test/java/org/apache/fineract/cn/lang/security/RsaKeyPairFactoryTest.java
+++ b/src/test/java/org/apache/fineract/cn/lang/security/RsaKeyPairFactoryTest.java
@@ -18,13 +18,29 @@
  */
 package org.apache.fineract.cn.lang.security;
 
+import static junit.framework.TestCase.assertTrue;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+
+import org.junit.After;
 import org.junit.Assert;
+import org.junit.Before;
 import org.junit.Test;
 
 public class RsaKeyPairFactoryTest {
 
-  public RsaKeyPairFactoryTest() {
-    super();
+  private final ByteArrayOutputStream outContent = new ByteArrayOutputStream();
+  private final PrintStream originalOut = System.out;
+
+  @Before
+  public void setUpStreams() {
+    System.setOut(new PrintStream(outContent));
+  }
+
+  @After
+  public void restoreStreams() {
+    System.setOut(originalOut);
   }
 
   @Test
@@ -36,4 +52,29 @@
     Assert.assertNotNull(keyPairHolder.publicKey());
     Assert.assertNotNull(keyPairHolder.privateKey());
   }
+
+  @Test
+  public void shouldPrintSpringStyle() {
+    RsaKeyPairFactory.main(new String[]{"SPRING"});
+
+    String systemOutput = outContent.toString();
+    assertTrue(systemOutput.contains("system.publicKey.exponent="));
+    assertTrue(systemOutput.contains("system.publicKey.modulus="));
+    assertTrue(systemOutput.contains("system.publicKey.timestamp="));
+    assertTrue(systemOutput.contains("system.privateKey.modulus="));
+    assertTrue(systemOutput.contains("system.privateKey.exponent="));
+  }
+
+  @Test
+  public void shouldPrintUnixStyle() {
+    RsaKeyPairFactory.main(new String[]{"UNIX"});
+
+    String systemOutput = outContent.toString();
+    assertTrue(systemOutput.contains("PUBLIC_KEY_EXPONENT="));
+    assertTrue(systemOutput.contains("PUBLIC_KEY_MODULUS="));
+    assertTrue(systemOutput.contains("PUBLIC_KEY_TIMESTAMP="));
+    assertTrue(systemOutput.contains("PRIVATE_KEY_MODULUS="));
+    assertTrue(systemOutput.contains("PRIVATE_KEY_EXPONENT="));
+  }
+
 }
