[ONOS-4711] Removed cyclic dependencies

Change-Id: I9ffea9a1a1b72f6ed3a23c0edb04cfc37bd8e48e
diff --git a/plugin/src/main/java/org/onosproject/yangutils/linker/YangLinker.java b/plugin/src/main/java/org/onosproject/yangutils/linker/YangLinker.java
index bbb673a..5f029f2 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/linker/YangLinker.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/linker/YangLinker.java
@@ -17,7 +17,7 @@
 package org.onosproject.yangutils.linker;
 
 import java.util.Set;
-import org.onosproject.yangutils.plugin.manager.YangFileInfo;
+import org.onosproject.yangutils.datamodel.YangNode;
 
 /**
  * Abstraction of entity which provides linking service of YANG files.
@@ -28,7 +28,7 @@
      * Resolve the import and include dependencies for a given resolution
      * information.
      *
-     * @param yangFileInfoSet set of all dependent YANG files
+     * @param yangNodeSet set of all dependent YANG nodes
      */
-    void resolveDependencies(Set<YangFileInfo> yangFileInfoSet);
+    void resolveDependencies(Set<YangNode> yangNodeSet);
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerManager.java b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerManager.java
index 4e8a60a..96e1bcc 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerManager.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerManager.java
@@ -25,7 +25,6 @@
 import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
 import org.onosproject.yangutils.linker.YangLinker;
 import org.onosproject.yangutils.linker.exceptions.LinkerException;
-import org.onosproject.yangutils.plugin.manager.YangFileInfo;
 
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 
@@ -53,53 +52,51 @@
     /**
      * Creates YANG nodes set.
      *
-     * @param yangFileInfoSet YANG file information set
+     * @param yangNodeSet YANG node information set
      */
-    public void createYangNodeSet(Set<YangFileInfo> yangFileInfoSet) {
-        for (YangFileInfo yangFileInfo : yangFileInfoSet) {
-            getYangNodeSet().add(yangFileInfo.getRootNode());
-        }
+    public void createYangNodeSet(Set<YangNode> yangNodeSet) {
+        getYangNodeSet().addAll(yangNodeSet);
     }
 
     @Override
-    public void resolveDependencies(Set<YangFileInfo> yangFileInfoSet) {
+    public void resolveDependencies(Set<YangNode> yangNodeSet) {
 
         // Create YANG node set.
-        createYangNodeSet(yangFileInfoSet);
+        createYangNodeSet(yangNodeSet);
 
         // Carry out linking of sub module with module.
-        linkSubModulesToParentModule(yangFileInfoSet);
+        linkSubModulesToParentModule(yangNodeSet);
 
         // Add references to import list.
-        addRefToYangFilesImportList(yangFileInfoSet);
+        addRefToYangFilesImportList(yangNodeSet);
 
         // Add reference to include list.
-        addRefToYangFilesIncludeList(yangFileInfoSet);
+        addRefToYangFilesIncludeList(yangNodeSet);
 
         // TODO check for circular import/include.
 
         // Carry out inter-file linking.
-        processInterFileLinking(yangFileInfoSet);
+        processInterFileLinking(yangNodeSet);
     }
 
     /**
      * Resolves sub-module linking by linking sub module with parent module.
      *
-     * @param yangFileInfoSet set of YANG files info
+     * @param yangNodeSet set of YANG files info
      * @throws LinkerException fails to link sub-module to parent module
      */
-    public void linkSubModulesToParentModule(Set<YangFileInfo> yangFileInfoSet)
+    public void linkSubModulesToParentModule(Set<YangNode> yangNodeSet)
             throws LinkerException {
-        for (YangFileInfo yangFileInfo : yangFileInfoSet) {
-            YangNode yangNode = yangFileInfo.getRootNode();
+        for (YangNode yangNode : yangNodeSet) {
             if (yangNode instanceof YangSubModule) {
                 try {
                     ((YangSubModule) yangNode).linkWithModule(getYangNodeSet());
                 } catch (DataModelException e) {
-                    String errorInfo = "YANG file error: " + yangFileInfo.getYangFileName() + " at line: "
+                    String errorInfo = "YANG file error: " + yangNode.getName() + " at line: "
                             + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
                             + e.getMessage();
                     throw new LinkerException(errorInfo);
+                    // TODO add file path in exception message in util manager.
                 }
             }
         }
@@ -108,20 +105,20 @@
     /**
      * Adds imported node information to the import list.
      *
-     * @param yangFileInfoSet set of YANG files info
+     * @param yangNodeSet set of YANG files info
      * @throws LinkerException fails to find imported module
      */
-    public void addRefToYangFilesImportList(Set<YangFileInfo> yangFileInfoSet) throws LinkerException {
-        for (YangFileInfo yangFileInfo : yangFileInfoSet) {
-            YangNode yangNode = yangFileInfo.getRootNode();
+    public void addRefToYangFilesImportList(Set<YangNode> yangNodeSet) throws LinkerException {
+        for (YangNode yangNode : yangNodeSet) {
             if (yangNode instanceof YangReferenceResolver) {
                 try {
                     ((YangReferenceResolver) yangNode).addReferencesToImportList(getYangNodeSet());
                 } catch (DataModelException e) {
-                    String errorInfo = "Error in file: " + yangFileInfo.getYangFileName() + " at line: "
+                    String errorInfo = "Error in file: " + yangNode.getName() + " at line: "
                             + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
                             + e.getMessage();
                     throw new LinkerException(errorInfo);
+                    // TODO add file path in exception message in util manager.
                 }
             }
         }
@@ -130,20 +127,20 @@
     /**
      * Adds included node information to the include list.
      *
-     * @param yangFileInfoSet set of YANG files info
+     * @param yangNodeSet set of YANG files info
      * @throws LinkerException fails to find included sub-module
      */
-    public void addRefToYangFilesIncludeList(Set<YangFileInfo> yangFileInfoSet) throws LinkerException {
-        for (YangFileInfo yangFileInfo : yangFileInfoSet) {
-            YangNode yangNode = yangFileInfo.getRootNode();
+    public void addRefToYangFilesIncludeList(Set<YangNode> yangNodeSet) throws LinkerException {
+        for (YangNode yangNode : yangNodeSet) {
             if (yangNode instanceof YangReferenceResolver) {
                 try {
                     ((YangReferenceResolver) yangNode).addReferencesToIncludeList(getYangNodeSet());
                 } catch (DataModelException e) {
-                    String errorInfo = "Error in file: " + yangFileInfo.getYangFileName() + " at line: "
+                    String errorInfo = "Error in file: " + yangNode.getName() + " at line: "
                             + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
                             + e.getMessage();
                     throw new LinkerException(errorInfo);
+                    // TODO add file path in exception message in util manager.
                 }
             }
         }
@@ -152,20 +149,21 @@
     /**
      * Processes inter file linking for type and uses.
      *
-     * @param yangFileInfoSet set of YANG files info
+     * @param yangNodeSet set of YANG files info
      * @throws LinkerException a violation in linker execution
      */
-    public void processInterFileLinking(Set<YangFileInfo> yangFileInfoSet)
+    public void processInterFileLinking(Set<YangNode> yangNodeSet)
             throws LinkerException {
-        for (YangFileInfo yangFileInfo : yangFileInfoSet) {
+        for (YangNode yangNode : yangNodeSet) {
             try {
-                ((YangReferenceResolver) yangFileInfo.getRootNode()).resolveInterFileLinking(ResolvableType.YANG_USES);
-                ((YangReferenceResolver) yangFileInfo.getRootNode())
+                ((YangReferenceResolver) yangNode).resolveInterFileLinking(ResolvableType.YANG_USES);
+                ((YangReferenceResolver) yangNode)
                         .resolveInterFileLinking(ResolvableType.YANG_DERIVED_DATA_TYPE);
             } catch (DataModelException e) {
-                String errorInfo = "Error in file: " + yangFileInfo.getYangFileName() + " at line: "
+                String errorInfo = "Error in file: " + yangNode.getName() + " at line: "
                         + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE + e.getMessage();
                 throw new LinkerException(errorInfo);
+                // TODO add file path in exception message in util manager.
             }
         }
     }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java
index 6a5b1d2..9d78d13 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java
@@ -17,7 +17,6 @@
 package org.onosproject.yangutils.parser.impl;
 
 import java.io.IOException;
-
 import org.antlr.v4.runtime.ANTLRFileStream;
 import org.antlr.v4.runtime.ANTLRInputStream;
 import org.antlr.v4.runtime.CommonTokenStream;
@@ -101,4 +100,4 @@
         // Returns the Root Node of the constructed data model tree.
         return treeWalker.getRootNode();
     }
-}
\ No newline at end of file
+}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/AugmentListenerUtil.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/AugmentListenerUtil.java
index 1b2009e..341cbf9 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/AugmentListenerUtil.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/AugmentListenerUtil.java
@@ -31,7 +31,7 @@
 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
 
 import static org.onosproject.yangutils.datamodel.utils.YangConstructType.AUGMENT_DATA;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
 
 /**
  * Represents a utility which provides listener utilities augment node.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java b/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java
new file mode 100644
index 0000000..ef218d5
--- /dev/null
+++ b/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java
@@ -0,0 +1,296 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yangutils.plugin.manager;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.nio.file.Files;
+import java.nio.file.StandardCopyOption;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Resource;
+import org.apache.maven.project.MavenProject;
+import org.onosproject.yangutils.datamodel.YangNode;
+import org.slf4j.Logger;
+import org.sonatype.plexus.build.incremental.BuildContext;
+
+import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN;
+import static org.onosproject.yangutils.utils.UtilConstants.JAR;
+import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
+import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
+import static org.onosproject.yangutils.utils.UtilConstants.TEMP;
+import static org.onosproject.yangutils.utils.UtilConstants.YANG_RESOURCES;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirPathFromJavaJPackage;
+import static org.slf4j.LoggerFactory.getLogger;
+
+/**
+ * Represents YANG plugin utilities.
+ */
+public final class YangPluginUtils {
+
+    private static final Logger log = getLogger(YangPluginUtils.class);
+
+    private static final String TARGET_RESOURCE_PATH = SLASH + TEMP + SLASH + YANG_RESOURCES + SLASH;
+
+    private static final String SERIALIZED_FILE_EXTENSION = ".ser";
+
+    private YangPluginUtils() {
+    }
+
+    /**
+     * Adds generated source directory to the compilation root.
+     *
+     * @param source  directory
+     * @param project current maven project
+     * @param context current build context
+     */
+    public static void addToCompilationRoot(String source, MavenProject project, BuildContext context) {
+        project.addCompileSourceRoot(source);
+        context.refresh(project.getBasedir());
+        log.info("Source directory added to compilation root: " + source);
+    }
+
+    /**
+     * Copies YANG files to the current project's output directory.
+     *
+     * @param yangFileInfo list of YANG files
+     * @param outputDir    project's output directory
+     * @param project      maven project
+     * @throws IOException when fails to copy files to destination resource directory
+     */
+    public static void copyYangFilesToTarget(Set<YangFileInfo> yangFileInfo, String outputDir, MavenProject project)
+            throws IOException {
+
+        List<File> files = getListOfFile(yangFileInfo);
+
+        String path = outputDir + TARGET_RESOURCE_PATH;
+        File targetDir = new File(path);
+        targetDir.mkdirs();
+
+        for (File file : files) {
+            Files.copy(file.toPath(),
+                    new File(path + file.getName()).toPath(),
+                    StandardCopyOption.REPLACE_EXISTING);
+        }
+        addToProjectResource(outputDir + SLASH + TEMP + SLASH, project);
+    }
+
+    /**
+     * Provides a list of files from list of strings.
+     *
+     * @param yangFileInfo set of yang file information
+     * @return list of files
+     */
+    private static List<File> getListOfFile(Set<YangFileInfo> yangFileInfo) {
+        List<File> files = new ArrayList<>();
+        Iterator<YangFileInfo> yangFileIterator = yangFileInfo.iterator();
+        while (yangFileIterator.hasNext()) {
+            YangFileInfo yangFile = yangFileIterator.next();
+            if (yangFile.isForTranslator()) {
+                files.add(new File(yangFile.getYangFileName()));
+            }
+        }
+        return files;
+    }
+
+    /**
+     * Serializes data-model.
+     *
+     * @param directory   base directory for serialized files
+     * @param fileInfoSet YANG file info set
+     * @param project     maven project
+     * @param operation   true if need to add to resource
+     * @throws IOException when fails to do IO operations
+     */
+    public static void serializeDataModel(String directory, Set<YangFileInfo> fileInfoSet,
+                                          MavenProject project, boolean operation) throws IOException {
+
+        String serFileDirPath = directory + TARGET_RESOURCE_PATH;
+        File dir = new File(serFileDirPath);
+        dir.mkdirs();
+
+        if (operation) {
+            addToProjectResource(directory + SLASH + TEMP + SLASH, project);
+        }
+
+        for (YangFileInfo fileInfo : fileInfoSet) {
+
+            String serFileName = serFileDirPath + getCamelCase(fileInfo.getRootNode().getName(), null)
+                    + SERIALIZED_FILE_EXTENSION;
+            fileInfo.setSerializedFile(serFileName);
+            FileOutputStream fileOutputStream = new FileOutputStream(serFileName);
+            ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
+            objectOutputStream.writeObject(fileInfo.getRootNode());
+            objectOutputStream.close();
+            fileOutputStream.close();
+        }
+    }
+
+    /**
+     * Returns de-serializes YANG data-model nodes.
+     *
+     * @param serailizedfileInfoSet YANG file info set
+     * @return de-serializes YANG data-model nodes
+     * @throws IOException when fails do IO operations
+     */
+    public static List<YangNode> deSerializeDataModel(List<String> serailizedfileInfoSet) throws IOException {
+
+        List<YangNode> nodes = new ArrayList<>();
+        for (String fileInfo : serailizedfileInfoSet) {
+            YangNode node = null;
+            try {
+                FileInputStream fileInputStream = new FileInputStream(fileInfo);
+                ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
+                node = (YangNode) objectInputStream.readObject();
+                nodes.add(node);
+                objectInputStream.close();
+                fileInputStream.close();
+            } catch (IOException | ClassNotFoundException e) {
+                throw new IOException(fileInfo + " not found.");
+            }
+        }
+        return nodes;
+    }
+
+    /**
+     * Returns list of jar path.
+     *
+     * @param project         maven project
+     * @param localRepository local repository
+     * @param remoteRepos     remote repository
+     * @return list of jar paths
+     */
+    private static List<String> resolveDependecyJarPath(MavenProject project, ArtifactRepository localRepository,
+                                                        List<ArtifactRepository> remoteRepos) {
+
+        StringBuilder path = new StringBuilder();
+        List<String> jarPaths = new ArrayList<>();
+        for (Dependency dependency : project.getDependencies()) {
+
+            path.append(localRepository.getBasedir());
+            path.append(SLASH);
+            path.append(getPackageDirPathFromJavaJPackage(dependency.getGroupId()));
+            path.append(SLASH);
+            path.append(dependency.getArtifactId());
+            path.append(SLASH);
+            path.append(dependency.getVersion());
+            path.append(SLASH);
+            path.append(dependency.getArtifactId() + HYPHEN + dependency.getVersion() + PERIOD + JAR);
+            File jarFile = new File(path.toString());
+            if (jarFile.exists()) {
+                jarPaths.add(path.toString());
+            }
+            path.delete(0, path.length());
+        }
+
+        for (ArtifactRepository repo : remoteRepos) {
+            // TODO: add resolver for remote repo.
+        }
+        return jarPaths;
+    }
+
+    /**
+     * Resolves inter jar dependencies.
+     *
+     * @param project         current maven project
+     * @param localRepository local maven repository
+     * @param remoteRepos     list of remote repository
+     * @param directory       directory for serialized files
+     * @return list of resolved datamodel nodes
+     * @throws IOException when fails to do IO operations
+     */
+    public static List<YangNode> resolveInterJarDependencies(MavenProject project, ArtifactRepository localRepository,
+                                                             List<ArtifactRepository> remoteRepos, String directory)
+            throws IOException {
+
+        List<String> dependeciesJarPaths = resolveDependecyJarPath(project, localRepository, remoteRepos);
+        List<YangNode> resolvedDataModelNodes = new ArrayList<>();
+        for (String dependecy : dependeciesJarPaths) {
+            resolvedDataModelNodes.addAll(deSerializeDataModel(parseJarFile(dependecy, directory)));
+        }
+        return resolvedDataModelNodes;
+    }
+
+    /**
+     * Parses jar file and returns list of serialized file names.
+     *
+     * @param jarFile   jar file to be parsed
+     * @param directory directory for keeping the searized files
+     * @return list of serialized files
+     * @throws IOException when fails to do IO operations
+     */
+    public static List<String> parseJarFile(String jarFile, String directory)
+            throws IOException {
+
+        List<String> serailizedFiles = new ArrayList<>();
+        JarFile jar = new JarFile(jarFile);
+        Enumeration<?> enumEntries = jar.entries();
+
+        File serializedFileDir = new File(directory);
+        serializedFileDir.mkdirs();
+        while (enumEntries.hasMoreElements()) {
+            JarEntry file = (JarEntry) enumEntries.nextElement();
+            if (file.getName().endsWith(SERIALIZED_FILE_EXTENSION)) {
+                if (file.getName().contains(SLASH)) {
+                    String[] strArray = file.getName().split(SLASH);
+                    String tempPath = "";
+                    for (int i = 0; i < strArray.length - 1; i++) {
+                        tempPath = SLASH + tempPath + SLASH + strArray[i];
+                    }
+                    File dir = new File(directory + tempPath);
+                    dir.mkdirs();
+                }
+                File serailizedFile = new File(directory + SLASH + file.getName());
+                if (file.isDirectory()) {
+                    serailizedFile.mkdirs();
+                    continue;
+                }
+                InputStream inputStream = jar.getInputStream(file);
+
+                FileOutputStream fileOutputStream = new FileOutputStream(serailizedFile);
+                while (inputStream.available() > 0) {
+                    fileOutputStream.write(inputStream.read());
+                }
+                fileOutputStream.close();
+                inputStream.close();
+                serailizedFiles.add(serailizedFile.toString());
+            }
+        }
+        jar.close();
+        return serailizedFiles;
+    }
+
+    /* Adds directory to resources of project */
+    private static void addToProjectResource(String dir, MavenProject project) {
+        Resource rsc = new Resource();
+        rsc.setDirectory(dir);
+        project.addResource(rsc);
+    }
+}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java b/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
index 9339e4b..7240725 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
@@ -21,7 +21,6 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
-
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
@@ -37,25 +36,25 @@
 import org.onosproject.yangutils.parser.YangUtilsParser;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
-import org.onosproject.yangutils.translator.tojava.utils.YangToJavaNamingConflictUtil;
 import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangToJavaNamingConflictUtil;
 import org.sonatype.plexus.build.incremental.BuildContext;
 
 import static org.apache.maven.plugins.annotations.LifecyclePhase.GENERATE_SOURCES;
 import static org.apache.maven.plugins.annotations.ResolutionScope.COMPILE;
+import static org.onosproject.yangutils.plugin.manager.YangPluginUtils.addToCompilationRoot;
+import static org.onosproject.yangutils.plugin.manager.YangPluginUtils.copyYangFilesToTarget;
+import static org.onosproject.yangutils.plugin.manager.YangPluginUtils.resolveInterJarDependencies;
+import static org.onosproject.yangutils.plugin.manager.YangPluginUtils.serializeDataModel;
 import static org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorUtil.generateJavaCode;
 import static org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorUtil.translatorErrorHandler;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getPackageDirPathFromJavaJPackage;
 import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT_BASE_PKG;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.addToCompilationRoot;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.copyYangFilesToTarget;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getDirectory;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.resolveInterJarDependencies;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.serializeDataModel;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirPathFromJavaJPackage;
 
 /**
  * Represents ONOS YANG utility maven plugin.
@@ -64,7 +63,7 @@
  * requiresDependencyResolution at compile time.
  */
 @Mojo(name = "yang2java", defaultPhase = GENERATE_SOURCES, requiresDependencyResolution = COMPILE,
-    requiresProject = true)
+        requiresProject = true)
 public class YangUtilManager
         extends AbstractMojo {
 
@@ -75,6 +74,8 @@
     private YangLinker yangLinker = new YangLinkerManager();
     private YangFileInfo curYangFileInfo = new YangFileInfo();
 
+    private Set<YangNode> yangNodeSet = new HashSet<>();
+
     private static final String DEFAULT_PKG = SLASH + getPackageDirPathFromJavaJPackage(DEFAULT_BASE_PKG);
 
     /**
@@ -217,6 +218,15 @@
     }
 
     /**
+     * Returns the YANG node set.
+     *
+     * @return YANG node set
+     */
+    public Set<YangNode> getYangNodeSet() {
+        return yangNodeSet;
+    }
+
+    /**
      * Resolved inter-jar dependencies.
      *
      * @throws IOException when fails to do IO operations
@@ -244,10 +254,11 @@
      */
     public void resolveDependenciesUsingLinker()
             throws MojoExecutionException {
+        createYangNodeSet();
         for (YangFileInfo yangFileInfo : getYangFileInfoSet()) {
             setCurYangFileInfo(yangFileInfo);
             try {
-                yangLinker.resolveDependencies(getYangFileInfoSet());
+                yangLinker.resolveDependencies(getYangNodeSet());
             } catch (LinkerException e) {
                 throw new MojoExecutionException(e.getMessage());
             }
@@ -255,6 +266,15 @@
     }
 
     /**
+     * Creates YANG nodes set.
+     */
+    public void createYangNodeSet() {
+        for (YangFileInfo yangFileInfo : getYangFileInfoSet()) {
+            getYangNodeSet().add(yangFileInfo.getRootNode());
+        }
+    }
+
+    /**
      * Parses all the provided YANG files and generates YANG data model tree.
      *
      * @throws IOException a violation in IO
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGenerator.java
index 277038c..1e0b14f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGenerator.java
@@ -17,7 +17,7 @@
 package org.onosproject.yangutils.translator.tojava;
 
 import org.onosproject.yangutils.translator.exception.TranslatorException;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 /**
  * Abstraction of an entity which provides Code generator functionalities.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaCodeGeneratorInfo.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorInfo.java
similarity index 81%
rename from plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaCodeGeneratorInfo.java
rename to plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorInfo.java
index 8dc0db5..6edd208 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaCodeGeneratorInfo.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorInfo.java
@@ -14,10 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.yangutils.translator.tojava.javamodel;
-
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
-import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
+package org.onosproject.yangutils.translator.tojava;
 
 /**
  * Represents YANG java info containing interface for java code generator, java
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java
index a6eb9d7..fec42ca 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java
@@ -20,7 +20,7 @@
 
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.TraversalType.CHILD;
 import static org.onosproject.yangutils.translator.tojava.TraversalType.PARENT;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaFileInfo.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaFileInfo.java
index 28302ee..1c37e06 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaFileInfo.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaFileInfo.java
@@ -18,7 +18,7 @@
 
 import java.io.Serializable;
 
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 /**
  * Represents cached java file handle, which supports the addition of member attributes and
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfo.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfo.java
index 98e44f8..c7d4583 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfo.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfo.java
@@ -22,13 +22,13 @@
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.javamodel.JavaLeafInfoContainer;
-import org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType;
-import org.onosproject.yangutils.translator.tojava.utils.YangToJavaNamingConflictUtil;
+import org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType;
+import org.onosproject.yangutils.utils.io.impl.YangToJavaNamingConflictUtil;
 
 import com.google.common.base.MoreObjects;
 
-import static org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType.getJavaImportClass;
-import static org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType.getJavaImportPackage;
+import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaImportClass;
+import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaImportPackage;
 
 /**
  * Represents the information about individual imports in the generated file.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaBeanFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaBeanFragmentFiles.java
index 14f4cd2..9ae2986 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaBeanFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaBeanFragmentFiles.java
@@ -19,7 +19,7 @@
 import java.io.File;
 import java.io.IOException;
 
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_IMPL_MASK;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getConstructor;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
index 309ee66..beb8de0 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
@@ -21,7 +21,7 @@
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangTypeHolder;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
index 2ab6f9d..238e01f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
@@ -28,19 +28,19 @@
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaType;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ENUM_IMPL_MASK;
 import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoForTheData;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.generateEnumAttributeString;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateEnumClassFile;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getPrefixForIdentifier;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPrefixForIdentifier;
 import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.closeFile;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_FIRST_DIGIT;
 import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUTO_PREFIX;
-import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.createPackage;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
 
 /**
  * Represents implementation of java code fragments temporary implementations.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
index 3c35a71..03ace2a 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
@@ -33,7 +33,7 @@
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModule;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModule;
 import org.onosproject.yangutils.translator.tojava.utils.JavaExtendsListHolder;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.getParentNodeInGenCode;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
@@ -55,7 +55,7 @@
 import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoForTheData;
 import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo.getQualifiedInfoOfFromString;
 import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo.getQualifiedTypeInfoOfCurNode;
-import static org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType.updateJavaFileInfo;
+import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.updateJavaFileInfo;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaAttributeDefination;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaClassDefClose;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateBuilderClassFile;
@@ -63,9 +63,9 @@
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateImplClassFile;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateInterfaceFile;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getFileObject;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getPackageDirPathFromJavaJPackage;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirPathFromJavaJPackage;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getBuildString;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getDefaultConstructorString;
@@ -104,7 +104,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
 import static org.onosproject.yangutils.utils.UtilConstants.SERVICE;
 import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
-import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.createPackage;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.readAppendFile;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
index 0d6215e..e5a7308 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
@@ -25,7 +25,7 @@
 import org.onosproject.yangutils.datamodel.YangNotification;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModule;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModule;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
@@ -46,10 +46,10 @@
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateManagerClassFile;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateServiceInterfaceFile;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getFileObject;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetterForClass;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRpcManagerMethod;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRpcServiceMethod;
@@ -67,7 +67,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
 import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
 import static org.onosproject.yangutils.utils.UtilConstants.VOID;
-import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.createPackage;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateJavaDocForRpc;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ENUM_ATTRIBUTE;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
index 930b6b4..989ac0c 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
@@ -26,7 +26,7 @@
 import org.onosproject.yangutils.datamodel.YangTypeHolder;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaType;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
@@ -36,13 +36,13 @@
 import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoForTheData;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateTypeDefClassFile;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateUnionClassFile;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOfMethodStringAndJavaDoc;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getTypeConstructorStringAndJavaDoc;
 import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.closeFile;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
-import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.createPackage;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
 
 /**
  * Represents implementation of java data type code fragments temporary implementations.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java
similarity index 83%
rename from plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java
rename to plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java
index 19ed11d..a0840eb 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java
@@ -14,10 +14,9 @@
  * limitations under the License.
  */
 
-package org.onosproject.yangutils.translator.tojava.utils;
+package org.onosproject.yangutils.translator.tojava.javamodel;
 
 import java.util.Stack;
-
 import org.onosproject.yangutils.datamodel.YangDataTypes;
 import org.onosproject.yangutils.datamodel.YangDerivedInfo;
 import org.onosproject.yangutils.datamodel.YangEnumeration;
@@ -26,48 +25,35 @@
 import org.onosproject.yangutils.datamodel.YangTypeDef;
 import org.onosproject.yangutils.datamodel.YangUnion;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
-import org.onosproject.yangutils.translator.tojava.javamodel.JavaCodeGeneratorInfo;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaEnumeration;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModule;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModule;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaTypeDef;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaUnion;
+import org.onosproject.yangutils.utils.io.impl.YangToJavaNamingConflictUtil;
 
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCurNodePackage;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getPackageDirPathFromJavaJPackage;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.getCurNodePackage;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
 import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
 import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
 import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
 import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
 import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
-import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
-import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
 import static org.onosproject.yangutils.utils.UtilConstants.INT;
 import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_LANG;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_MATH;
 import static org.onosproject.yangutils.utils.UtilConstants.LONG;
 import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
-import static org.onosproject.yangutils.utils.UtilConstants.NEW;
-import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BOOLEAN;
-import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
-import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
-import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
-import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
 import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
-import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
 import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
 import static org.onosproject.yangutils.utils.UtilConstants.YANG_BINARY_CLASS;
 import static org.onosproject.yangutils.utils.UtilConstants.YANG_BITS_CLASS;
 import static org.onosproject.yangutils.utils.UtilConstants.YANG_DECIMAL64_CLASS;
 import static org.onosproject.yangutils.utils.UtilConstants.YANG_TYPES_PKG;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirPathFromJavaJPackage;
 
 /**
  * Represents java data types info corresponding to YANG type.
@@ -121,51 +107,6 @@
     }
 
     /**
-     * Returns from string method parsed string.
-     *
-     * @param targetDataType target data type
-     * @param yangType       YANG type
-     * @return parsed string
-     */
-    public static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
-
-        YangDataTypes type = yangType.getDataType();
-
-        switch (type) {
-            case INT8:
-                return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
-            case INT16:
-                return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
-            case INT32:
-                return INTEGER_WRAPPER + PERIOD + PARSE_INT;
-            case INT64:
-                return LONG_WRAPPER + PERIOD + PARSE_LONG;
-            case UINT8:
-                return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
-            case UINT16:
-                return INTEGER_WRAPPER + PERIOD + PARSE_INT;
-            case UINT32:
-                return LONG_WRAPPER + PERIOD + PARSE_LONG;
-            case UINT64:
-                return NEW + SPACE + BIG_INTEGER;
-            case STRING:
-                return EMPTY_STRING;
-            case EMPTY:
-            case BOOLEAN:
-                return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
-            case DECIMAL64:
-            case BITS:
-            case BINARY:
-            case UNION:
-            case ENUMERATION:
-            case DERIVED:
-                return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
-            default:
-                throw new TranslatorException("given data type is not supported.");
-        }
-    }
-
-    /**
      * Returns java import class.
      *
      * @param yangType     YANG type
@@ -174,7 +115,7 @@
      * @return java import class
      */
     public static String getJavaImportClass(YangType<?> yangType, boolean isListAttr,
-            YangToJavaNamingConflictUtil pluginConfig) {
+                                            YangToJavaNamingConflictUtil pluginConfig) {
 
         YangDataTypes type = yangType.getDataType();
 
@@ -279,7 +220,7 @@
      * @return java import package
      */
     public static String getJavaImportPackage(YangType<?> yangType, boolean isListAttr,
-            YangToJavaNamingConflictUtil conflictResolver) {
+                                              YangToJavaNamingConflictUtil conflictResolver) {
 
         YangDataTypes type = yangType.getDataType();
 
@@ -425,7 +366,7 @@
      * @return java package from parent node
      */
     private static String getPackageFromParent(YangNode parent,
-            YangToJavaNamingConflictUtil conflictResolver) {
+                                               YangToJavaNamingConflictUtil conflictResolver) {
         if (!(parent instanceof JavaFileInfoContainer)) {
             throw new TranslatorException("invalid child node is being processed.");
         }
@@ -444,7 +385,7 @@
      * @param conflictResolver yang plugin config
      */
     public static void updateJavaFileInfo(YangNode yangNode,
-            YangToJavaNamingConflictUtil conflictResolver) {
+                                          YangToJavaNamingConflictUtil conflictResolver) {
         Stack<YangNode> nodesToUpdatePackage = new Stack<YangNode>();
 
         /*
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java
index 3722ad3..c57e3c4 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java
@@ -17,7 +17,7 @@
 
 import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoContainer;
-import org.onosproject.yangutils.translator.tojava.utils.YangToJavaNamingConflictUtil;
+import org.onosproject.yangutils.utils.io.impl.YangToJavaNamingConflictUtil;
 
 /**
  * Represent java based identification of the YANG leaves.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java
index 5b1e7c5..c85b1a2 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java
@@ -16,7 +16,7 @@
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoContainer;
-import org.onosproject.yangutils.translator.tojava.utils.YangToJavaNamingConflictUtil;
+import org.onosproject.yangutils.utils.io.impl.YangToJavaNamingConflictUtil;
 
 /**
  * Represent java based identification of the YANG leaves.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugment.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugment.java
index 6ac0fb7..cc54b24 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugment.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugment.java
@@ -20,12 +20,13 @@
 import org.onosproject.yangutils.datamodel.YangAugment;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
-import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfAugmentableNode;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfAugmentableNode;
 
 /**
  * Represents augment information extended to support java code generation.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaCase.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaCase.java
index ba7bd01..4652fd4 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaCase.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaCase.java
@@ -20,12 +20,13 @@
 import org.onosproject.yangutils.datamodel.YangCase;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
-import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfAugmentableNode;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfAugmentableNode;
 
 /**
  * Represents case information extended to support java code generation.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaChoice.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaChoice.java
index 4096972..1e29349 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaChoice.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaChoice.java
@@ -20,12 +20,13 @@
 import org.onosproject.yangutils.datamodel.YangChoice;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.INTERFACE_MASK;
-import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeAndUpdateInParent;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeAndUpdateInParent;
 
 /**
  * Represents choice information extended to support java code generation.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaContainer.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaContainer.java
index c056632..eac6291 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaContainer.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaContainer.java
@@ -20,12 +20,13 @@
 import org.onosproject.yangutils.datamodel.YangContainer;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
-import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeAndUpdateInParent;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeAndUpdateInParent;
 
 /**
  * Represents container information extended to support java code generation.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumeration.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumeration.java
index 16cabc2..2edd8d8 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumeration.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumeration.java
@@ -21,12 +21,13 @@
 import org.onosproject.yangutils.datamodel.YangEnumeration;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
-import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfNode;
 
 /**
  * Represents YANG java enumeration information extended to support java code generation.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGrouping.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGrouping.java
index 8a90a44..808c4c1 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGrouping.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGrouping.java
@@ -20,11 +20,12 @@
 import org.onosproject.yangutils.datamodel.YangGrouping;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
-import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.updatePackageInfo;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.updatePackageInfo;
 
 /**
  * Represents grouping information extended to support java code generation.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaInput.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaInput.java
index db59174..7e6211a 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaInput.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaInput.java
@@ -21,12 +21,13 @@
 import org.onosproject.yangutils.datamodel.YangInput;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
-import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfAugmentableNode;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfAugmentableNode;
 
 /**
  * Represents input information extended to support java code generation.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeaf.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeaf.java
index 9f39dce..a9fa972 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeaf.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeaf.java
@@ -17,10 +17,10 @@
 
 import org.onosproject.yangutils.datamodel.YangLeaf;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
-import org.onosproject.yangutils.translator.tojava.utils.YangToJavaNamingConflictUtil;
+import org.onosproject.yangutils.utils.io.impl.YangToJavaNamingConflictUtil;
 
 import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo.updateLeavesJavaQualifiedInfo;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
 
 /**
  * Represents java information corresponding to the YANG leaf.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafList.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafList.java
index 91c550f..c22a134 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafList.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafList.java
@@ -17,10 +17,10 @@
 
 import org.onosproject.yangutils.datamodel.YangLeafList;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
-import org.onosproject.yangutils.translator.tojava.utils.YangToJavaNamingConflictUtil;
+import org.onosproject.yangutils.utils.io.impl.YangToJavaNamingConflictUtil;
 
 import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo.updateLeavesJavaQualifiedInfo;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
 
 /**
  * Represents java information corresponding to the YANG leaf-list.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaList.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaList.java
index 6f08b5d..e4a1997 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaList.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaList.java
@@ -20,12 +20,13 @@
 import org.onosproject.yangutils.datamodel.YangList;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
-import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeAndUpdateInParent;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeAndUpdateInParent;
 
 /**
  * Represents YANG list information extended to support java code generation.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangJavaModelUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModelUtils.java
similarity index 89%
rename from plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangJavaModelUtils.java
rename to plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModelUtils.java
index 3f378c7..58eee77 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangJavaModelUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModelUtils.java
@@ -14,24 +14,23 @@
  * limitations under the License.
  */
 
-package org.onosproject.yangutils.translator.tojava.utils;
+package org.onosproject.yangutils.translator.tojava.javamodel;
 
 import java.io.IOException;
-
 import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
 import org.onosproject.yangutils.datamodel.YangCase;
 import org.onosproject.yangutils.datamodel.YangChoice;
 import org.onosproject.yangutils.datamodel.YangLeavesHolder;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangTypeHolder;
+import org.onosproject.yangutils.datamodel.utils.DataModelUtils;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.javamodel.JavaCodeGeneratorInfo;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaEnumeration;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModule;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModule;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.isRpcChildNodePresent;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
@@ -39,10 +38,10 @@
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
 import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.addCurNodeInfoInParentTempFile;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCurNodePackage;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getPackageDirPathFromJavaJPackage;
+import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirPathFromJavaJPackage;
 
 /**
  * Represents utility class for YANG java model.
@@ -316,7 +315,7 @@
      * @throws IOException IO operations fails
      */
     public static void generateCodeOfRootNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
-            YangPluginConfig yangPluginConfig, String rootPkg)
+                                              YangPluginConfig yangPluginConfig, String rootPkg)
             throws IOException {
         if (!(javaCodeGeneratorInfo instanceof YangNode)) {
             // TODO:throw exception
@@ -349,4 +348,26 @@
         javaCodeGeneratorInfo.getJavaFileInfo().addGeneratedFileTypes(GENERATE_EVENT_LISTENER_INTERFACE);
     }
 
+    /**
+     * Returns the node package string.
+     *
+     * @param curNode current java node whose package string needs to be set
+     * @return returns the root package string
+     */
+    public static String getCurNodePackage(YangNode curNode) {
+
+        String pkg;
+        if (!(curNode instanceof JavaFileInfoContainer)
+                || curNode.getParent() == null) {
+            throw new TranslatorException("missing parent node to get current node's package");
+        }
+
+        YangNode parentNode = DataModelUtils.getParentNodeInGenCode(curNode);
+        if (!(parentNode instanceof JavaFileInfoContainer)) {
+            throw new TranslatorException("missing parent java node to get current node's package");
+        }
+        JavaFileInfo parentJavaFileHandle = ((JavaFileInfoContainer) parentNode).getJavaFileInfo();
+        pkg = parentJavaFileHandle.getPackage() + PERIOD + parentJavaFileHandle.getJavaName();
+        return pkg.toLowerCase();
+    }
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java
index 1413f9c..b53ec92 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java
@@ -24,16 +24,17 @@
 import org.onosproject.yangutils.datamodel.YangNotification;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
-import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfRootNode;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfRootNode;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir;
 
 /**
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotification.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotification.java
index 68f8164..61eebfb 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotification.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotification.java
@@ -22,17 +22,18 @@
 import org.onosproject.yangutils.datamodel.YangNotification;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
 import org.onosproject.yangutils.translator.tojava.utils.JavaExtendsListHolder;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
-import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfAugmentableNode;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfAugmentableNode;
 import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING;
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaOutput.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaOutput.java
index dda3fc9..ce9ed6e 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaOutput.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaOutput.java
@@ -21,12 +21,13 @@
 import org.onosproject.yangutils.datamodel.YangOutput;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
-import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfAugmentableNode;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfAugmentableNode;
 
 /**
  * Represents output information extended to support java code generation.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpc.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpc.java
index f3730a2..fe72d18 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpc.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpc.java
@@ -26,19 +26,20 @@
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
 import org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.getParentNodeInGenCode;
 import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoForTheData;
 import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo.getQualifiedTypeInfoOfCurNode;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
-import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.updatePackageInfo;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.updatePackageInfo;
 import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE;
 import static org.onosproject.yangutils.utils.UtilConstants.COMPONENT;
 import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java
index d838682..31abd5c 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java
@@ -26,16 +26,17 @@
 import org.onosproject.yangutils.datamodel.YangSubModule;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
-import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfRootNode;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfRootNode;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir;
 
 /**
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaType.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaType.java
index e537743..1a96a3a 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaType.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaType.java
@@ -18,8 +18,7 @@
 import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
-import org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType;
-import org.onosproject.yangutils.translator.tojava.utils.YangToJavaNamingConflictUtil;
+import org.onosproject.yangutils.utils.io.impl.YangToJavaNamingConflictUtil;
 
 /**
  * Represents java information corresponding to the YANG type.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDef.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDef.java
index 0124510..3d33f3d 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDef.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDef.java
@@ -20,12 +20,13 @@
 import org.onosproject.yangutils.datamodel.YangTypeDef;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
-import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfNode;
 
 /**
  * Represents type define information extended to support java code generation.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUnion.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUnion.java
index eac8e52..cca3e4b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUnion.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUnion.java
@@ -20,12 +20,13 @@
 import org.onosproject.yangutils.datamodel.YangUnion;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
-import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfNode;
 
 /**
  * Represents union information extended to support java code generation.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUses.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUses.java
index f6166a5..cef6202 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUses.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUses.java
@@ -25,13 +25,14 @@
 import org.onosproject.yangutils.datamodel.YangUses;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.getParentNodeInGenCode;
 import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.addCurNodeAsAttributeInTargetTempFile;
-import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.updatePackageInfo;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.updatePackageInfo;
 
 /**
  * Represents uses information extended to support java code generation.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
index dde4b03..69f6d3e 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
@@ -17,9 +17,9 @@
 package org.onosproject.yangutils.translator.tojava.utils;
 
 import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.YangNotification;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaNotification;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
@@ -75,7 +75,7 @@
      * / interface definition start.
      *
      * @param genFileTypes generated file type
-     * @param yangName class name
+     * @param yangName     class name
      * @return class definition
      */
     public static String generateClassDefinition(int genFileTypes, String yangName) {
@@ -85,19 +85,19 @@
          * class / interface definition start.
          */
         switch (genFileTypes) {
-        case BUILDER_CLASS_MASK:
-            return getBuilderClassDefinition(yangName);
-        case IMPL_CLASS_MASK:
-            return getImplClassDefinition(yangName);
-        case BUILDER_INTERFACE_MASK:
-            return getBuilderInterfaceDefinition(yangName);
-        case GENERATE_TYPEDEF_CLASS:
-        case GENERATE_UNION_CLASS:
-            return getTypeClassDefinition(yangName);
-        case GENERATE_ENUM_CLASS:
-            return getEnumClassDefinition(yangName);
-        default:
-            return null;
+            case BUILDER_CLASS_MASK:
+                return getBuilderClassDefinition(yangName);
+            case IMPL_CLASS_MASK:
+                return getImplClassDefinition(yangName);
+            case BUILDER_INTERFACE_MASK:
+                return getBuilderInterfaceDefinition(yangName);
+            case GENERATE_TYPEDEF_CLASS:
+            case GENERATE_UNION_CLASS:
+                return getTypeClassDefinition(yangName);
+            case GENERATE_ENUM_CLASS:
+                return getEnumClassDefinition(yangName);
+            default:
+                return null;
         }
     }
 
@@ -106,8 +106,8 @@
      * / interface definition start.
      *
      * @param genFileTypes generated file type
-     * @param yangName class name
-     * @param curNode current YANG node
+     * @param yangName     class name
+     * @param curNode      current YANG node
      * @return class definition
      */
     public static String generateClassDefinition(int genFileTypes, String yangName, YangNode curNode) {
@@ -117,19 +117,19 @@
          * class / interface definition start.
          */
         switch (genFileTypes) {
-        case INTERFACE_MASK:
-            return getInterfaceDefinition(yangName, curNode);
-        case GENERATE_SERVICE_AND_MANAGER:
-            return getRpcInterfaceDefinition(yangName, curNode);
-        case GENERATE_EVENT_CLASS:
-            String eventName = yangName + SUBJECT;
-            return getEventDefinition(yangName, eventName);
-        case GENERATE_EVENT_LISTENER_INTERFACE:
-            return getEventListenerDefinition(yangName);
-        case GENERATE_EVENT_SUBJECT_CLASS:
-            return getClassDefinition(yangName);
-        default:
-            return null;
+            case INTERFACE_MASK:
+                return getInterfaceDefinition(yangName, curNode);
+            case GENERATE_SERVICE_AND_MANAGER:
+                return getRpcInterfaceDefinition(yangName, curNode);
+            case GENERATE_EVENT_CLASS:
+                String eventName = yangName + SUBJECT;
+                return getEventDefinition(yangName, eventName);
+            case GENERATE_EVENT_LISTENER_INTERFACE:
+                return getEventListenerDefinition(yangName);
+            case GENERATE_EVENT_SUBJECT_CLASS:
+                return getClassDefinition(yangName);
+            default:
+                return null;
         }
     }
 
@@ -174,7 +174,7 @@
      * Returns builder interface file class definition.
      *
      * @param yangName java class name, corresponding to which the builder class
-     * is being generated
+     *                 is being generated
      * @return definition
      */
     private static String getBuilderInterfaceDefinition(String yangName) {
@@ -227,7 +227,7 @@
      * Returns RPC file interface definition.
      *
      * @param yangName file name
-     * @param curNode current YANG node
+     * @param curNode  current YANG node
      * @return definition
      */
     private static String getRpcInterfaceDefinition(String yangName, YangNode curNode) {
@@ -236,7 +236,7 @@
         if (holder.getExtendsList() != null && !holder.getExtendsList().isEmpty()) {
             curNode = curNode.getChild();
             while (curNode != null) {
-                if (curNode instanceof YangJavaNotification) {
+                if (curNode instanceof YangNotification) {
                     return getRpcInterfaceDefinitionWhenItExtends(yangName, holder);
                 }
                 curNode = curNode.getNextSibling();
@@ -251,7 +251,7 @@
 
     /* Provides class definition when RPC interface needs to extends any event.*/
     private static String getRpcInterfaceDefinitionWhenItExtends(String yangName,
-            JavaExtendsListHolder holder) {
+                                                                 JavaExtendsListHolder holder) {
 
         if (yangName.matches(REGEX_FOR_ANY_STRING_ENDING_WITH_SERVICE)) {
             String[] strArray = yangName.split(SERVICE);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
index b254e87..3e523b0 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
@@ -17,9 +17,10 @@
 package org.onosproject.yangutils.translator.tojava.utils;
 
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
 import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
 import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaExtendsListHolder.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaExtendsListHolder.java
index 36986b8..efe3833 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaExtendsListHolder.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaExtendsListHolder.java
@@ -27,7 +27,7 @@
 import org.onosproject.yangutils.translator.tojava.JavaImportData;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
 
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
 import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.getTempJavaFragement;
 
 /**
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
index c082d26..25b9c85 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
@@ -28,7 +28,8 @@
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
 import org.onosproject.yangutils.translator.tojava.TempJavaEnumerationFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.javamodel.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
@@ -65,7 +66,7 @@
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getDataFromTempFileHandle;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getEnumsValueAttribute;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.initiateJavaFileGeneration;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.addActivateMethod;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.addDeActivateMethod;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAddAugmentInfoMethodImpl;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
index c940791..fc24ff9 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
@@ -31,6 +31,7 @@
 import org.onosproject.yangutils.translator.tojava.TempJavaTypeFragmentFiles;
 import org.onosproject.yangutils.utils.io.impl.CopyrightHeader;
 import org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
@@ -64,8 +65,8 @@
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK;
 import static org.onosproject.yangutils.translator.tojava.utils.ClassDefinitionGenerator.generateClassDefinition;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getJavaPackageFromPackagePath;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getJavaPackageFromPackagePath;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
 import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
 import static org.onosproject.yangutils.utils.UtilConstants.COMPONENT_ANNOTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
index 95355aa..c9b2765 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
@@ -16,16 +16,18 @@
 
 package org.onosproject.yangutils.translator.tojava.utils;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
-
 import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.utils.DataModelUtils;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
+import org.onosproject.yangutils.utils.io.impl.YangIoUtils;
+import org.onosproject.yangutils.utils.io.impl.YangToJavaNamingConflictUtil;
 
+import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.getParentNodeInGenCode;
 import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
 import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT_BASE_PKG;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
@@ -33,23 +35,17 @@
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_KEY_WORDS;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
-import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_DIGITS_WITH_SINGLE_LETTER;
 import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_FIRST_DIGIT;
-import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_HYPHEN;
-import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_IDENTIFIER_SPECIAL_CHAR;
-import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_PERIOD;
-import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_SINGLE_LETTER;
-import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_UNDERSCORE;
 import static org.onosproject.yangutils.utils.UtilConstants.REGEX_WITH_ALL_SPECIAL_CHAR;
-import static org.onosproject.yangutils.utils.UtilConstants.REGEX_WITH_DIGITS;
-import static org.onosproject.yangutils.utils.UtilConstants.REGEX_WITH_SINGLE_CAPITAL_CASE;
-import static org.onosproject.yangutils.utils.UtilConstants.REGEX_WITH_SINGLE_CAPITAL_CASE_AND_DIGITS_SMALL_CASES;
-import static org.onosproject.yangutils.utils.UtilConstants.REGEX_WITH_UPPERCASE;
 import static org.onosproject.yangutils.utils.UtilConstants.REVISION_PREFIX;
 import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
 import static org.onosproject.yangutils.utils.UtilConstants.UNDER_SCORE;
 import static org.onosproject.yangutils.utils.UtilConstants.VERSION_PREFIX;
-import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUTO_PREFIX;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.addPackageInfo;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.createDirectories;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getAbsolutePackagePath;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getJavaPackageFromPackagePath;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirPathFromJavaJPackage;
 
 /**
  * Represents an utility Class for translating the name from YANG to java convention.
@@ -73,14 +69,14 @@
     /**
      * Returns the root package string.
      *
-     * @param version YANG version
-     * @param nameSpace name space of the module
-     * @param revision revision of the module defined
+     * @param version          YANG version
+     * @param nameSpace        name space of the module
+     * @param revision         revision of the module defined
      * @param conflictResolver object of YANG to java naming conflict util
      * @return the root package string
      */
     public static String getRootPackage(byte version, String nameSpace, String revision,
-            YangToJavaNamingConflictUtil conflictResolver) {
+                                        YangToJavaNamingConflictUtil conflictResolver) {
 
         String pkg;
         pkg = DEFAULT_BASE_PKG;
@@ -95,29 +91,6 @@
     }
 
     /**
-     * Returns the node package string.
-     *
-     * @param curNode current java node whose package string needs to be set
-     * @return returns the root package string
-     */
-    public static String getCurNodePackage(YangNode curNode) {
-
-        String pkg;
-        if (!(curNode instanceof JavaFileInfoContainer)
-                || curNode.getParent() == null) {
-            throw new TranslatorException("missing parent node to get current node's package");
-        }
-
-        YangNode parentNode = DataModelUtils.getParentNodeInGenCode(curNode);
-        if (!(parentNode instanceof JavaFileInfoContainer)) {
-            throw new TranslatorException("missing parent java node to get current node's package");
-        }
-        JavaFileInfo parentJavaFileHandle = ((JavaFileInfoContainer) parentNode).getJavaFileInfo();
-        pkg = parentJavaFileHandle.getPackage() + PERIOD + parentJavaFileHandle.getJavaName();
-        return pkg.toLowerCase();
-    }
-
-    /**
      * Returns version.
      *
      * @param ver YANG version
@@ -130,7 +103,7 @@
     /**
      * Returns package name from name space.
      *
-     * @param nameSpace name space of YANG module
+     * @param nameSpace        name space of YANG module
      * @param conflictResolver object of YANG to java naming conflict util
      * @return java package name as per java rules
      */
@@ -181,7 +154,7 @@
     /**
      * Returns the package string.
      *
-     * @param pkgArr package array
+     * @param pkgArr           package array
      * @param conflictResolver object of YANG to java naming conflict util
      * @return package string
      */
@@ -193,7 +166,7 @@
         for (String member : pkgArr) {
             boolean presenceOfKeyword = JAVA_KEY_WORDS.contains(member.toLowerCase());
             if (presenceOfKeyword || member.matches(REGEX_FOR_FIRST_DIGIT)) {
-                String prefix = getPrefixForIdentifier(conflictResolver);
+                String prefix = YangIoUtils.getPrefixForIdentifier(conflictResolver);
                 member = prefix + member;
             }
             pkg = pkg + member;
@@ -206,252 +179,6 @@
     }
 
     /**
-     * Prefix for adding with identifier and namespace, when it is a java keyword or starting with digits.
-     *
-     * @param conflictResolver object of YANG to java naming conflict util
-     * @return prefix which needs to be added
-     */
-    public static String getPrefixForIdentifier(YangToJavaNamingConflictUtil conflictResolver) {
-
-        String prefixForIdentifier = null;
-        if (conflictResolver != null) {
-            prefixForIdentifier = conflictResolver.getPrefixForIdentifier();
-        }
-        if (prefixForIdentifier != null) {
-            prefixForIdentifier = prefixForIdentifier.replaceAll(REGEX_WITH_ALL_SPECIAL_CHAR, COLAN);
-            String[] strArray = prefixForIdentifier.split(COLAN);
-            try {
-                if (strArray[0].isEmpty()) {
-                    List<String> stringArrangement = new ArrayList<String>();
-                    for (int i = 1; i < strArray.length; i++) {
-                        stringArrangement.add(strArray[i]);
-                    }
-                    strArray = stringArrangement.toArray(new String[stringArrangement.size()]);
-                }
-                prefixForIdentifier = strArray[0];
-                for (int j = 1; j < strArray.length; j++) {
-                    prefixForIdentifier = prefixForIdentifier + strArray[j].substring(0, 1).toUpperCase() +
-                            strArray[j].substring(1);
-                }
-            } catch (ArrayIndexOutOfBoundsException outOfBoundsException) {
-                throw new TranslatorException("The given prefix in pom.xml is invalid.");
-            }
-        } else {
-            prefixForIdentifier = YANG_AUTO_PREFIX;
-        }
-        return prefixForIdentifier;
-    }
-
-    /**
-     * Returns the YANG identifier name as java identifier.
-     *
-     * @param yangIdentifier identifier in YANG file
-     * @param conflictResolver object of YANG to java naming conflict util
-     * @return corresponding java identifier
-     */
-    public static String getCamelCase(String yangIdentifier, YangToJavaNamingConflictUtil conflictResolver) {
-
-        if (conflictResolver != null) {
-            String replacementForHyphen = conflictResolver.getReplacementForHyphen();
-            String replacementForPeriod = conflictResolver.getReplacementForPeriod();
-            String replacementForUnderscore = conflictResolver.getReplacementForUnderscore();
-            if (replacementForPeriod != null) {
-                yangIdentifier = yangIdentifier.replaceAll(REGEX_FOR_PERIOD,
-                        PERIOD + replacementForPeriod.toLowerCase() + PERIOD);
-            }
-            if (replacementForUnderscore != null) {
-                yangIdentifier = yangIdentifier.replaceAll(REGEX_FOR_UNDERSCORE,
-                        UNDER_SCORE + replacementForUnderscore.toLowerCase() + UNDER_SCORE);
-            }
-            if (replacementForHyphen != null) {
-                yangIdentifier = yangIdentifier.replaceAll(REGEX_FOR_HYPHEN,
-                        HYPHEN + replacementForHyphen.toLowerCase() + HYPHEN);
-            }
-        }
-        yangIdentifier = yangIdentifier.replaceAll(REGEX_FOR_IDENTIFIER_SPECIAL_CHAR, COLAN);
-        String[] strArray = yangIdentifier.split(COLAN);
-        if (strArray[0].isEmpty()) {
-            List<String> stringArrangement = new ArrayList<String>();
-            for (int i = 1; i < strArray.length; i++) {
-                stringArrangement.add(strArray[i]);
-            }
-            strArray = stringArrangement.toArray(new String[stringArrangement.size()]);
-        }
-        return upperCaseConflictResolver(strArray, conflictResolver);
-    }
-
-    /**
-     * Resolves the conflict when input has upper case.
-     *
-     * @param stringArray containing strings for upper case conflict resolver
-     * @param conflictResolver object of YANG to java naming conflict util
-     * @return camel cased string
-     */
-    private static String upperCaseConflictResolver(String[] stringArray,
-            YangToJavaNamingConflictUtil conflictResolver) {
-
-        for (int l = 0; l < stringArray.length; l++) {
-            String[] upperCaseSplitArray = stringArray[l].split(REGEX_WITH_UPPERCASE);
-            for (int m = 0; m < upperCaseSplitArray.length; m++) {
-                if (upperCaseSplitArray[m].matches(REGEX_WITH_SINGLE_CAPITAL_CASE)) {
-                    int check = m;
-                    while (check + 1 < upperCaseSplitArray.length) {
-                        if (upperCaseSplitArray[check + 1].matches(REGEX_WITH_SINGLE_CAPITAL_CASE)) {
-                            upperCaseSplitArray[check + 1] = upperCaseSplitArray[check + 1].toLowerCase();
-                            check = check + 1;
-                        } else if (upperCaseSplitArray[check + 1]
-                                .matches(REGEX_WITH_SINGLE_CAPITAL_CASE_AND_DIGITS_SMALL_CASES)) {
-                            upperCaseSplitArray[check + 1] = upperCaseSplitArray[check + 1].toLowerCase();
-                            break;
-                        } else {
-                            break;
-                        }
-                    }
-                }
-            }
-            StringBuilder strBuilder = new StringBuilder();
-            for (String element : upperCaseSplitArray) {
-                strBuilder.append(element);
-            }
-            stringArray[l] = strBuilder.toString();
-        }
-        List<String> result = new ArrayList<String>();
-        for (String element : stringArray) {
-            String[] capitalCaseSplitArray = element.split(REGEX_WITH_UPPERCASE);
-            for (String letter : capitalCaseSplitArray) {
-                String[] arrayForAddition = letter.split(REGEX_WITH_DIGITS);
-                List<String> list = Arrays.asList(arrayForAddition);
-                for (String str : list) {
-                    if (str != null && !str.isEmpty()) {
-                        result.add(str);
-                    }
-                }
-            }
-        }
-        stringArray = result.toArray(new String[result.size()]);
-        return applyCamelCaseRule(stringArray, conflictResolver);
-    }
-
-    /**
-     * Applies the rule that a string does not end with a capitalized letter and capitalizes
-     * the letter next to a number in an array.
-     *
-     * @param stringArray containing strings for camel case separation
-     * @param conflictResolver object of YANG to java naming conflict util
-     * @return camel case rule checked string
-     */
-    private static String applyCamelCaseRule(String[] stringArray, YangToJavaNamingConflictUtil conflictResolver) {
-
-        String ruleChecker = stringArray[0].toLowerCase();
-        int i;
-        if (ruleChecker.matches(REGEX_FOR_FIRST_DIGIT)) {
-            i = 0;
-            ruleChecker = EMPTY_STRING;
-        } else {
-            i = 1;
-        }
-        for (; i < stringArray.length; i++) {
-            if (i + 1 == stringArray.length) {
-                if (stringArray[i].matches(REGEX_FOR_SINGLE_LETTER)
-                        || stringArray[i].matches(REGEX_FOR_DIGITS_WITH_SINGLE_LETTER)) {
-                    ruleChecker = ruleChecker + stringArray[i].toLowerCase();
-                    break;
-                }
-            }
-            if (stringArray[i].matches(REGEX_FOR_FIRST_DIGIT)) {
-                for (int j = 0; j < stringArray[i].length(); j++) {
-                    char letterCheck = stringArray[i].charAt(j);
-                    if (Character.isLetter(letterCheck)) {
-                        stringArray[i] = stringArray[i].substring(0, j)
-                                + stringArray[i].substring(j, j + 1).toUpperCase() + stringArray[i].substring(j + 1);
-                        break;
-                    }
-                }
-                ruleChecker = ruleChecker + stringArray[i];
-            } else {
-                ruleChecker = ruleChecker + stringArray[i].substring(0, 1).toUpperCase() + stringArray[i].substring(1);
-            }
-        }
-        String ruleCheckerWithPrefix = addPrefix(ruleChecker, conflictResolver);
-        return restrictConsecutiveCapitalCase(ruleCheckerWithPrefix);
-    }
-
-    /**
-     * Adds prefix, if the string begins with digit or is a java key word.
-     *
-     * @param camelCasePrefix string for adding prefix
-     * @param conflictResolver object of YANG to java naming conflict util
-     * @return prefixed camel case string
-     */
-    private static String addPrefix(String camelCasePrefix, YangToJavaNamingConflictUtil conflictResolver) {
-
-        String prefix = getPrefixForIdentifier(conflictResolver);
-        if (camelCasePrefix.matches(REGEX_FOR_FIRST_DIGIT)) {
-            camelCasePrefix = prefix + camelCasePrefix;
-        }
-        if (JAVA_KEY_WORDS.contains(camelCasePrefix)) {
-            camelCasePrefix = prefix + camelCasePrefix.substring(0, 1).toUpperCase()
-                    + camelCasePrefix.substring(1);
-        }
-        return camelCasePrefix;
-    }
-
-    /**
-     * Restricts consecutive capital cased string as a rule in camel case.
-     *
-     * @param consecCapitalCaseRemover which requires the restriction of consecutive capital case
-     * @return string without consecutive capital case
-     */
-    private static String restrictConsecutiveCapitalCase(String consecCapitalCaseRemover) {
-
-        for (int k = 0; k < consecCapitalCaseRemover.length(); k++) {
-            if (k + 1 < consecCapitalCaseRemover.length()) {
-                if (Character.isUpperCase(consecCapitalCaseRemover.charAt(k))) {
-                    if (Character.isUpperCase(consecCapitalCaseRemover.charAt(k + 1))) {
-                        consecCapitalCaseRemover = consecCapitalCaseRemover.substring(0, k + 1)
-                                + consecCapitalCaseRemover.substring(k + 1, k + 2).toLowerCase()
-                                + consecCapitalCaseRemover.substring(k + 2);
-                    }
-                }
-            }
-        }
-        return consecCapitalCaseRemover;
-    }
-
-    /**
-     * Returns the YANG identifier name as java identifier with first letter
-     * in capital.
-     *
-     * @param yangIdentifier identifier in YANG file
-     * @return corresponding java identifier
-     */
-    public static String getCapitalCase(String yangIdentifier) {
-        yangIdentifier = yangIdentifier.substring(0, 1).toUpperCase() + yangIdentifier.substring(1);
-        return restrictConsecutiveCapitalCase(yangIdentifier);
-    }
-
-    /**
-     * Returns the YANG identifier name as java identifier with first letter
-     * in small.
-     *
-     * @param yangIdentifier identifier in YANG file.
-     * @return corresponding java identifier
-     */
-    public static String getSmallCase(String yangIdentifier) {
-        return yangIdentifier.substring(0, 1).toLowerCase() + yangIdentifier.substring(1);
-    }
-
-    /**
-     * Returns the java Package from package path.
-     *
-     * @param packagePath package path
-     * @return java package
-     */
-    public static String getJavaPackageFromPackagePath(String packagePath) {
-        return packagePath.replace(SLASH, PERIOD);
-    }
-
-    /**
      * Returns enum's java name.
      *
      * @param name enum's name
@@ -479,12 +206,46 @@
     }
 
     /**
-     * Returns the directory path corresponding to java package.
+     * Creates a package structure with package info java file if not present.
      *
-     * @param packagePath package path
-     * @return java package
+     * @param yangNode YANG node for which code is being generated
+     * @throws IOException any IO exception
      */
-    public static String getPackageDirPathFromJavaJPackage(String packagePath) {
-        return packagePath.replace(PERIOD, SLASH);
+    public static void createPackage(YangNode yangNode) throws IOException {
+        if (!(yangNode instanceof JavaFileInfoContainer)) {
+            throw new TranslatorException("current node must have java file info");
+        }
+        String pkgInfo;
+        JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) yangNode).getJavaFileInfo();
+        String pkg = getAbsolutePackagePath(javaFileInfo.getBaseCodeGenPath(), javaFileInfo.getPackageFilePath());
+        if (!doesPackageExist(pkg)) {
+            try {
+                File pack = createDirectories(pkg);
+                YangNode parent = getParentNodeInGenCode(yangNode);
+                if (parent != null) {
+                    pkgInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo().getJavaName();
+                    addPackageInfo(pack, pkgInfo, getJavaPackageFromPackagePath(pkg), true,
+                            ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig());
+                } else {
+                    pkgInfo = ((JavaFileInfoContainer) yangNode).getJavaFileInfo().getJavaName();
+                    addPackageInfo(pack, pkgInfo, getJavaPackageFromPackagePath(pkg), false,
+                            ((JavaFileInfoContainer) yangNode).getJavaFileInfo().getPluginConfig());
+                }
+            } catch (IOException e) {
+                throw new IOException("failed to create package-info file");
+            }
+        }
+    }
+
+    /**
+     * Checks if the package directory structure created.
+     *
+     * @param pkg Package to check if it is created
+     * @return existence status of package
+     */
+    public static boolean doesPackageExist(String pkg) {
+        File pkgDir = new File(getPackageDirPathFromJavaJPackage(pkg));
+        File pkgWithFile = new File(pkgDir + SLASH + "package-info.java");
+        return pkgDir.exists() && pkgWithFile.isFile();
     }
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
index b6889c8..92caa48 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
@@ -18,31 +18,28 @@
 
 import java.util.List;
 import java.util.Map;
-
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
+import org.onosproject.yangutils.datamodel.YangDataTypes;
+import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaAugment;
 import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
+import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
-import static org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType.getParseFromStringMethod;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
 import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE;
 import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.AND;
-import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTABLE;
 import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
+import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
 import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
+import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
 import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
+import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
 import static org.onosproject.yangutils.utils.UtilConstants.CASE;
 import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
 import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
@@ -74,8 +71,10 @@
 import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
 import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
 import static org.onosproject.yangutils.utils.UtilConstants.INT;
+import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
 import static org.onosproject.yangutils.utils.UtilConstants.LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.LONG;
+import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.NULL;
@@ -88,6 +87,11 @@
 import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
 import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
 import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
+import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BOOLEAN;
+import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
+import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
+import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
+import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
 import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
@@ -96,6 +100,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
 import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
 import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
+import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
 import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
 import static org.onosproject.yangutils.utils.UtilConstants.STARTED_LOG_INFO;
@@ -113,7 +118,6 @@
 import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
 import static org.onosproject.yangutils.utils.UtilConstants.VOID;
 import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
-import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
@@ -123,6 +127,10 @@
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
 
 /**
@@ -139,7 +147,7 @@
     /**
      * Returns the methods strings for builder interface.
      *
-     * @param name attribute name
+     * @param name         attribute name
      * @param pluginConfig plugin configurations
      * @return method string for builder interface
      */
@@ -150,13 +158,13 @@
     /**
      * Returns getter string.
      *
-     * @param attr attribute info
+     * @param attr               attribute info
      * @param generatedJavaFiles generated java files
-     * @param pluginConfig plugin configurations
+     * @param pluginConfig       plugin configurations
      * @return getter string
      */
     public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
-            YangPluginConfig pluginConfig) {
+                                         YangPluginConfig pluginConfig) {
 
         String returnType = getReturnType(attr);
         String attributeName = attr.getAttributeName();
@@ -168,14 +176,14 @@
     /**
      * Returns setter string.
      *
-     * @param attr attribute info
-     * @param className java class name
+     * @param attr               attribute info
+     * @param className          java class name
      * @param generatedJavaFiles generated java files
-     * @param pluginConfig plugin configurations
+     * @param pluginConfig       plugin configurations
      * @return setter string
      */
     public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
-            YangPluginConfig pluginConfig) {
+                                         YangPluginConfig pluginConfig) {
 
         String attrType = getReturnType(attr);
         String attributeName = attr.getAttributeName();
@@ -193,7 +201,7 @@
     /**
      * Returns constructor method string.
      *
-     * @param name class name
+     * @param name         class name
      * @param pluginConfig plugin configurations
      * @return constructor string
      */
@@ -204,13 +212,13 @@
     /**
      * Returns default constructor method string.
      *
-     * @param name class name
+     * @param name         class name
      * @param modifierType modifier type
      * @param pluginConfig plugin configurations
      * @return default constructor string
      */
     public static String getDefaultConstructorString(String name, String modifierType,
-            YangPluginConfig pluginConfig) {
+                                                     YangPluginConfig pluginConfig) {
         return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig)
                 + getDefaultConstructor(name, modifierType)
                 + NEW_LINE;
@@ -240,7 +248,7 @@
     /**
      * Returns the getter method strings for class file.
      *
-     * @param attr attribute info
+     * @param attr               attribute info
      * @param generatedJavaFiles for the type of java file being generated
      * @return getter method for class
      */
@@ -259,8 +267,8 @@
     /**
      * Returns getter for attribute.
      *
-     * @param type return type
-     * @param name attribute name
+     * @param type               return type
+     * @param name               attribute name
      * @param generatedJavaFiles generated java files
      * @return getter for attribute
      */
@@ -283,23 +291,23 @@
     /*Provides string to return for type.*/
     private static String parseTypeForReturnValue(String type) {
         switch (type) {
-        case BYTE:
-        case INT:
-        case SHORT:
-        case LONG:
-            return "0";
-        case BOOLEAN_DATA_TYPE:
-            return FALSE;
-        default:
-            return null;
+            case BYTE:
+            case INT:
+            case SHORT:
+            case LONG:
+                return "0";
+            case BOOLEAN_DATA_TYPE:
+                return FALSE;
+            default:
+                return null;
         }
     }
 
     /**
      * Returns the setter method strings for class file.
      *
-     * @param attr attribute info
-     * @param className name of the class
+     * @param attr               attribute info
+     * @param className          name of the class
      * @param generatedJavaFiles generated java files
      * @return setter method for class
      */
@@ -318,8 +326,8 @@
      * Returns setter for attribute.
      *
      * @param className class name
-     * @param name attribute name
-     * @param type return type
+     * @param name      attribute name
+     * @param type      return type
      * @return setter for attribute
      */
     private static String getSetter(String className, String name, String type, int generatedJavaFiles) {
@@ -381,14 +389,14 @@
     /**
      * Returns the getter method strings for interface file.
      *
-     * @param yangName name of the attribute
-     * @param returnType return type of attribute
-     * @param isList is list attribute
+     * @param yangName           name of the attribute
+     * @param returnType         return type of attribute
+     * @param isList             is list attribute
      * @param generatedJavaFiles generated java files
      * @return getter method for interface
      */
     public static String getGetterForInterface(String yangName, String returnType, boolean isList,
-            int generatedJavaFiles) {
+                                               int generatedJavaFiles) {
 
         if (!isList) {
             return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
@@ -401,11 +409,11 @@
      * Returns getter for attribute in interface.
      *
      * @param returnType return type
-     * @param yangName attribute name
+     * @param yangName   attribute name
      * @return getter for interface
      */
     private static String getGetterInterfaceString(String returnType, String yangName,
-            int generatedJavaFiles) {
+                                                   int generatedJavaFiles) {
         if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
             return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
                     + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
@@ -418,15 +426,15 @@
     /**
      * Returns the setter method strings for interface file.
      *
-     * @param attrName name of the attribute
-     * @param attrType return type of attribute
-     * @param className name of the java class being generated
-     * @param isList is list attribute
+     * @param attrName           name of the attribute
+     * @param attrType           return type of attribute
+     * @param className          name of the java class being generated
+     * @param isList             is list attribute
      * @param generatedJavaFiles generated java files
      * @return setter method for interface
      */
     public static String getSetterForInterface(String attrName, String attrType, String className,
-            boolean isList, int generatedJavaFiles) {
+                                               boolean isList, int generatedJavaFiles) {
 
         if (!isList) {
             return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
@@ -439,12 +447,12 @@
      * Returns setter string for interface.
      *
      * @param className class name
-     * @param attrName attribute name
-     * @param attrType attribute type
+     * @param attrName  attribute name
+     * @param attrType  attribute type
      * @return setter string
      */
     private static String getSetterInterfaceString(String className, String attrName, String attrType,
-            int generatedJavaFiles) {
+                                                   int generatedJavaFiles) {
         if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
 
             return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
@@ -494,7 +502,7 @@
     /**
      * Returns constructor string for impl class.
      *
-     * @param yangName class name
+     * @param yangName     class name
      * @param pluginConfig plugin configurations
      * @return constructor string
      */
@@ -512,14 +520,14 @@
     /**
      * Returns the constructor strings for class file.
      *
-     * @param yangName name of the class
-     * @param attr attribute info
+     * @param yangName           name of the class
+     * @param attr               attribute info
      * @param generatedJavaFiles generated java files
-     * @param pluginConfig plugin configurations
+     * @param pluginConfig       plugin configurations
      * @return constructor for class
      */
     public static String getConstructor(String yangName, JavaAttributeInfo attr, int generatedJavaFiles,
-            YangPluginConfig pluginConfig) {
+                                        YangPluginConfig pluginConfig) {
 
         String attributeName = attr.getAttributeName();
         String constructor;
@@ -545,14 +553,14 @@
     /**
      * Returns the rpc strings for service interface.
      *
-     * @param rpcName name of the rpc
-     * @param inputName name of input
-     * @param outputName name of output
+     * @param rpcName      name of the rpc
+     * @param inputName    name of input
+     * @param outputName   name of output
      * @param pluginConfig plugin configurations
      * @return rpc method string
      */
     public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
-            YangPluginConfig pluginConfig) {
+                                             YangPluginConfig pluginConfig) {
 
         rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
         if (!inputName.equals(EMPTY_STRING)) {
@@ -565,14 +573,14 @@
     /**
      * Returns the rpc strings for manager impl.
      *
-     * @param rpcName name of the rpc
-     * @param inputName name of input
-     * @param outputName name of output
+     * @param rpcName      name of the rpc
+     * @param inputName    name of input
+     * @param outputName   name of output
      * @param pluginConfig plugin configurations
      * @return rpc method string
      */
     public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
-            YangPluginConfig pluginConfig) {
+                                             YangPluginConfig pluginConfig) {
 
         rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
         if (!inputName.equals(EMPTY_STRING)) {
@@ -608,7 +616,7 @@
     /**
      * Returns the Default constructor strings for class file.
      *
-     * @param name name of the class
+     * @param name         name of the class
      * @param modifierType modifier type for default constructor
      * @return Default constructor for class
      */
@@ -663,7 +671,7 @@
     /**
      * Returns from string method's open string.
      *
-     * @param className name of the class
+     * @param className    name of the class
      * @param pluginConfig plugin configurations
      * @return from string method's open string
      */
@@ -687,13 +695,13 @@
     /**
      * Return from string method's body string.
      *
-     * @param attr attribute info
+     * @param attr                    attribute info
      * @param fromStringAttributeInfo attribute info for the from string
-     * wrapper type
+     *                                wrapper type
      * @return from string method's body string
      */
     public static String getFromStringMethod(JavaAttributeInfo attr,
-            JavaAttributeInfo fromStringAttributeInfo) {
+                                             JavaAttributeInfo fromStringAttributeInfo) {
 
         return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
                 + getParsedSubString(attr, fromStringAttributeInfo) + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION
@@ -736,7 +744,7 @@
      * @return sub string with parsed statement for union's from string method
      */
     private static String getParsedSubString(JavaAttributeInfo attr,
-            JavaAttributeInfo fromStringAttributeInfo) {
+                                             JavaAttributeInfo fromStringAttributeInfo) {
 
         String targetDataType = getReturnType(attr);
         String parseFromStringMethod = getParseFromStringMethod(targetDataType,
@@ -865,13 +873,13 @@
     /**
      * Returns of method's string and java doc for special type.
      *
-     * @param attr attribute info
+     * @param attr                   attribute info
      * @param generatedJavaClassName class name
-     * @param pluginConfig plugin configurations
+     * @param pluginConfig           plugin configurations
      * @return of method's string and java doc for special type
      */
     public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
-            YangPluginConfig pluginConfig) {
+                                                     YangPluginConfig pluginConfig) {
 
         String attrType = getReturnType(attr);
         String attrName = attr.getAttributeName();
@@ -883,7 +891,7 @@
     /**
      * Returns of method's string.
      *
-     * @param type data type
+     * @param type      data type
      * @param className class name
      * @return of method's string
      */
@@ -898,13 +906,14 @@
     /**
      * Returns string and java doc for constructor of type class.
      *
-     * @param attr attribute info
+     * @param attr                   attribute info
      * @param generatedJavaClassName class name
-     * @param pluginConfig plugin configurations
+     * @param pluginConfig           plugin configurations
      * @return string and java doc for constructor of type class
      */
     public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
-            String generatedJavaClassName, YangPluginConfig pluginConfig) {
+                                                            String generatedJavaClassName,
+                                                            YangPluginConfig pluginConfig) {
 
         String attrType = getReturnType(attr);
         String attrName = attr.getAttributeName();
@@ -916,8 +925,8 @@
     /**
      * Returns type constructor string.
      *
-     * @param type data type
-     * @param name attribute name
+     * @param type      data type
+     * @param name      attribute name
      * @param className class name
      * @return type constructor string
      */
@@ -989,47 +998,18 @@
     }
 
     /**
-     * Provides string to be added in augment node's constructor.
-     *
-     * @param curNode current YANG node
-     * @return constructors string
-     */
-    public static String getAugmentsAddToAugmentedMethod(YangNode curNode) {
-
-        if (!(curNode instanceof YangJavaAugment)) {
-            throw new TranslatorException("current node should be of type augment node.");
-        }
-        YangJavaAugment augment = (YangJavaAugment) curNode;
-        List<YangNodeIdentifier> targetNodes = augment.getTargetNode();
-
-        String name = targetNodes.get(targetNodes.size() - 1).getName();
-        String captialCase = getCapitalCase(name);
-        String smallCase = getSmallCase(captialCase);
-        return EIGHT_SPACE_INDENTATION + captialCase + IMPL + SPACE + smallCase + IMPL + SPACE + EQUAL + SPACE
-                + NEW + SPACE + captialCase + BUILDER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + NEW + SPACE
-                + captialCase + IMPL + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
-                + EIGHT_SPACE_INDENTATION + smallCase + IMPL + PERIOD + ADD_STRING + AUGMENTATION
-                + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
-
-    }
-
-    private static String getAugmentsAddToAugmentedMethodStart() {
-        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING + AUGMENTABLE + OPEN_PARENTHESIS
-                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
-    }
-
-    /**
      * Returns of method for enum class.
      *
-     * @param className class name
-     * @param attr java attribute
-     * @param enumMap enum's sets map
-     * @param enumList enum's sets list
+     * @param className    class name
+     * @param attr         java attribute
+     * @param enumMap      enum's sets map
+     * @param enumList     enum's sets list
      * @param pluginConfig plugin configurations
      * @return of method
      */
     public static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
-            Map<String, Integer> enumMap, List<String> enumList, YangPluginConfig pluginConfig) {
+                                          Map<String, Integer> enumMap, List<String> enumList,
+                                          YangPluginConfig pluginConfig) {
         String attrType = getReturnType(attr);
         String attrName = attr.getAttributeName();
 
@@ -1083,4 +1063,48 @@
                 + STOPPED_LOG_INFO + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
     }
 
+    /**
+     * Returns from string method parsed string.
+     *
+     * @param targetDataType target data type
+     * @param yangType       YANG type
+     * @return parsed string
+     */
+    public static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
+
+        YangDataTypes type = yangType.getDataType();
+
+        switch (type) {
+            case INT8:
+                return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
+            case INT16:
+                return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
+            case INT32:
+                return INTEGER_WRAPPER + PERIOD + PARSE_INT;
+            case INT64:
+                return LONG_WRAPPER + PERIOD + PARSE_LONG;
+            case UINT8:
+                return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
+            case UINT16:
+                return INTEGER_WRAPPER + PERIOD + PARSE_INT;
+            case UINT32:
+                return LONG_WRAPPER + PERIOD + PARSE_LONG;
+            case UINT64:
+                return NEW + SPACE + BIG_INTEGER;
+            case STRING:
+                return EMPTY_STRING;
+            case EMPTY:
+            case BOOLEAN:
+                return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
+            case DECIMAL64:
+            case BITS:
+            case BINARY:
+            case UNION:
+            case ENUMERATION:
+            case DERIVED:
+                return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
+            default:
+                throw new TranslatorException("given data type is not supported.");
+        }
+    }
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java
index f70ec53..39620f9 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java
@@ -19,51 +19,29 @@
 import java.io.File;
 import java.io.IOException;
 import java.util.List;
-
 import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
-import org.onosproject.yangutils.translator.exception.TranslatorException;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
 import org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaAugment;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModule;
 
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
 import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION_IMPORT;
-import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
-import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION_HOLDER;
 import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
-import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
-import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
 import static org.onosproject.yangutils.utils.UtilConstants.COMPONENT_ANNOTATION_IMPORT;
 import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION_IMPORT;
-import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
-import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
-import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
-import static org.onosproject.yangutils.utils.UtilConstants.IMPORT;
 import static org.onosproject.yangutils.utils.UtilConstants.LISTENER_SERVICE;
 import static org.onosproject.yangutils.utils.UtilConstants.LOGGER_FACTORY_IMPORT;
 import static org.onosproject.yangutils.utils.UtilConstants.LOGGER_IMPORT;
-import static org.onosproject.yangutils.utils.UtilConstants.NEW;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
-import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
-import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
-import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
 import static org.onosproject.yangutils.utils.UtilConstants.SERVICE_ANNOTATION_IMPORT;
 import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
-import static org.onosproject.yangutils.utils.UtilConstants.THIS;
 import static org.onosproject.yangutils.utils.UtilConstants.TYPE;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.updateFileHandle;
-
 import static java.util.Collections.sort;
 
 /**
@@ -121,84 +99,6 @@
     }
 
     /**
-     * Updated imports with augmented nodes import.
-     *
-     * @param curNode   current YANG node
-     * @param imports   list of imports
-     * @param operation to add or to delete
-     */
-    public static void addAugmentedNodesImport(YangNode curNode, List<String> imports, boolean operation) {
-
-        String nodesImport = "";
-
-        if (!(curNode instanceof YangJavaAugment)) {
-            throw new TranslatorException("current node should be of type augment node.");
-        }
-        YangJavaAugment augment = (YangJavaAugment) curNode;
-        List<YangNodeIdentifier> targetNodes = augment.getTargetNode();
-        YangNode parent = curNode.getParent();
-        if (parent instanceof YangJavaModule) {
-            // Add impl class import.
-            nodesImport = getAugmendtedNodesImports(parent, targetNodes, true) + SEMI_COLAN + NEW_LINE;
-            performOperationOnImports(imports, nodesImport, operation);
-            // Add builder class import.
-            if (targetNodes.size() > 2) {
-                nodesImport = getAugmendtedNodesImports(parent, targetNodes, false) + SEMI_COLAN + NEW_LINE;
-                performOperationOnImports(imports, nodesImport, operation);
-            }
-        }
-        // TODO: add functionality for submodule and uses.
-    }
-
-    /**
-     * Returns imports for augmented node.
-     *
-     * @param parent      parent YANG node
-     * @param targetNodes list of target nodes
-     * @param isImplClass if impl class's import required
-     * @return imports for augmented node
-     */
-    private static String getAugmendtedNodesImports(YangNode parent, List<YangNodeIdentifier> targetNodes,
-            boolean isImplClass) {
-        String pkgInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPackage();
-
-        for (int i = 0; i < targetNodes.size() - 1; i++) {
-            pkgInfo = pkgInfo + PERIOD + targetNodes.get(i).getName();
-        }
-        String classInfo = targetNodes.get(targetNodes.size() - 1).getName();
-        if (!isImplClass) {
-            return IMPORT + pkgInfo.toLowerCase() + PERIOD + getCapitalCase(classInfo) + BUILDER;
-        }
-        return IMPORT + pkgInfo.toLowerCase() + PERIOD + getCapitalCase(classInfo) + BUILDER + PERIOD
-                + getCapitalCase(classInfo) + IMPL;
-    }
-
-    /**
-     * Provides string to be added in augment node's constructor.
-     *
-     * @param curNode current YANG node
-     * @return constructors string
-     */
-    public static String getAugmentsAddToAugmentedClassString(YangNode curNode) {
-
-        if (!(curNode instanceof YangJavaAugment)) {
-            throw new TranslatorException("current node should be of type augment node.");
-        }
-        YangJavaAugment augment = (YangJavaAugment) curNode;
-        List<YangNodeIdentifier> targetNodes = augment.getTargetNode();
-
-        String name = targetNodes.get(targetNodes.size() - 1).getName();
-        String captialCase = getCapitalCase(name);
-        String smallCase = getSmallCase(captialCase);
-        return EIGHT_SPACE_INDENTATION + captialCase + IMPL + SPACE + smallCase + IMPL + SPACE + EQUAL + SPACE + NEW
-                + SPACE + captialCase + BUILDER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + NEW + SPACE
-                + captialCase + IMPL + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
-                + EIGHT_SPACE_INDENTATION + smallCase + IMPL + PERIOD + ADD_STRING + AUGMENTATION + OPEN_PARENTHESIS
-                + THIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
-
-    }
-
-    /**
      * Adds import for array list.
      *
      * @param curNode   current YANG node
@@ -227,7 +127,7 @@
      * @param classInfo class info to be added to import list
      */
     public static void addListnersImport(YangNode curNode, List<String> imports, boolean operation,
-            String classInfo) {
+                                         String classInfo) {
         String thisImport = "";
         if (classInfo.equals(LISTENER_SERVICE)) {
             thisImport = getTempJavaFragement(curNode).getJavaImportData().getListenerServiceImport();
@@ -272,7 +172,7 @@
      * @return import list
      */
     private static List<String> performOperationOnImports(List<String> imports, String curImport,
-            boolean operation) {
+                                                          boolean operation) {
         if (operation) {
             imports.add(curImport);
         } else {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java
index 7ae17d4..d3e7b09 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java
@@ -25,24 +25,12 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.translator.exception.TranslatorException;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
-
-import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.getParentNodeInGenCode;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getJavaPackageFromPackagePath;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getPackageDirPathFromJavaJPackage;
 import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.MULTIPLE_NEW_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
-import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
 import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.addPackageInfo;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.createDirectories;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getAbsolutePackagePath;
 
 /**
  * Represents utility to handle file system operations.
@@ -56,57 +44,13 @@
     }
 
     /**
-     * Checks if the package directory structure created.
-     *
-     * @param pkg Package to check if it is created
-     * @return existence status of package
-     */
-    public static boolean doesPackageExist(String pkg) {
-        File pkgDir = new File(getPackageDirPathFromJavaJPackage(pkg));
-        File pkgWithFile = new File(pkgDir + SLASH + "package-info.java");
-        return pkgDir.exists() && pkgWithFile.isFile();
-    }
-
-    /**
-     * Creates a package structure with package info java file if not present.
-     *
-     * @param yangNode YANG node for which code is being generated
-     * @throws IOException any IO exception
-     */
-    public static void createPackage(YangNode yangNode) throws IOException {
-        if (!(yangNode instanceof JavaFileInfoContainer)) {
-            throw new TranslatorException("current node must have java file info");
-        }
-        String pkgInfo;
-        JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) yangNode).getJavaFileInfo();
-        String pkg = getAbsolutePackagePath(javaFileInfo.getBaseCodeGenPath(), javaFileInfo.getPackageFilePath());
-        if (!doesPackageExist(pkg)) {
-            try {
-                File pack = createDirectories(pkg);
-                YangNode parent = getParentNodeInGenCode(yangNode);
-                if (parent != null) {
-                    pkgInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo().getJavaName();
-                    addPackageInfo(pack, pkgInfo, getJavaPackageFromPackagePath(pkg), true,
-                            ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig());
-                } else {
-                    pkgInfo = ((JavaFileInfoContainer) yangNode).getJavaFileInfo().getJavaName();
-                    addPackageInfo(pack, pkgInfo, getJavaPackageFromPackagePath(pkg), false,
-                            ((JavaFileInfoContainer) yangNode).getJavaFileInfo().getPluginConfig());
-                }
-            } catch (IOException e) {
-                throw new IOException("failed to create package-info file");
-            }
-        }
-    }
-
-    /**
      * Reads the contents from source file and append its contents to append
      * file.
      *
      * @param toAppend destination file in which the contents of source file is
-     * appended
-     * @param srcFile source file from which data is read and added to to append
-     * file
+     *                 appended
+     * @param srcFile  source file from which data is read and added to to append
+     *                 file
      * @throws IOException any IO errors
      */
     public static void appendFileContents(File toAppend, File srcFile)
@@ -118,7 +62,7 @@
      * Reads file and convert it to string.
      *
      * @param toAppend file to be converted
-     * @param spaces spaces to be appended
+     * @param spaces   spaces to be appended
      * @return string of file
      * @throws IOException when fails to convert to string
      */
@@ -153,9 +97,9 @@
     /**
      * Updates the generated file handle.
      *
-     * @param inputFile input file
+     * @param inputFile        input file
      * @param contentTobeAdded content to be appended to the file
-     * @param isClose when close of file is called.
+     * @param isClose          when close of file is called.
      * @throws IOException if the named file exists but is a directory rather than a regular file,
      *                     does not exist but cannot be created, or cannot be opened for any other reason
      */
diff --git a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
index fb8f981..19660b1 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
@@ -16,10 +16,7 @@
 
 package org.onosproject.yangutils.utils.io.impl;
 
-import org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
-
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_CLASS_JAVA_DOC;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_INTERFACE_JAVA_DOC;
@@ -202,7 +199,7 @@
      */
     public static String getJavaDoc(JavaDocType type, String name, boolean isList, YangPluginConfig pluginConfig) {
 
-        name = JavaIdentifierSyntax.getSmallCase(getCamelCase(name, pluginConfig.getConflictResolver()));
+        name = YangIoUtils.getSmallCase(getCamelCase(name, pluginConfig.getConflictResolver()));
         switch (type) {
             case IMPL_CLASS: {
                 return generateForClass(name);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
index 05cd471..baea6ea 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
@@ -19,73 +19,60 @@
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.nio.file.Files;
-import java.nio.file.StandardCopyOption;
 import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Iterator;
+import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Set;
 import java.util.Stack;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
 import java.util.regex.Pattern;
-
 import org.apache.commons.io.FileUtils;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.Resource;
-import org.apache.maven.project.MavenProject;
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.plugin.manager.YangFileInfo;
-import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
-import org.slf4j.Logger;
-import org.sonatype.plexus.build.incremental.BuildContext;
+import org.onosproject.yangutils.translator.exception.TranslatorException;
 
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getPackageDirPathFromJavaJPackage;
+import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
 import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.HASH;
 import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN;
-import static org.onosproject.yangutils.utils.UtilConstants.JAR;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_KEY_WORDS;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
 import static org.onosproject.yangutils.utils.UtilConstants.ORG;
 import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
+import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_DIGITS_WITH_SINGLE_LETTER;
+import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_FIRST_DIGIT;
+import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_HYPHEN;
+import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_IDENTIFIER_SPECIAL_CHAR;
+import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_PERIOD;
+import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_SINGLE_LETTER;
+import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_UNDERSCORE;
+import static org.onosproject.yangutils.utils.UtilConstants.REGEX_WITH_ALL_SPECIAL_CHAR;
+import static org.onosproject.yangutils.utils.UtilConstants.REGEX_WITH_DIGITS;
+import static org.onosproject.yangutils.utils.UtilConstants.REGEX_WITH_SINGLE_CAPITAL_CASE;
+import static org.onosproject.yangutils.utils.UtilConstants.REGEX_WITH_SINGLE_CAPITAL_CASE_AND_DIGITS_SMALL_CASES;
+import static org.onosproject.yangutils.utils.UtilConstants.REGEX_WITH_UPPERCASE;
 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
 import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
 import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
-import static org.onosproject.yangutils.utils.UtilConstants.TEMP;
 import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
-import static org.onosproject.yangutils.utils.UtilConstants.YANG_RESOURCES;
+import static org.onosproject.yangutils.utils.UtilConstants.UNDER_SCORE;
+import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUTO_PREFIX;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.appendFileContents;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.updateFileHandle;
-import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.PACKAGE_INFO;
-import static org.slf4j.LoggerFactory.getLogger;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
 
 /**
  * Represents common utility functionalities for code generation.
  */
 public final class YangIoUtils {
 
-    private static final Logger log = getLogger(YangIoUtils.class);
-    private static final String TARGET_RESOURCE_PATH = SLASH + TEMP + SLASH + YANG_RESOURCES + SLASH;
     private static final int LINE_SIZE = 118;
     private static final int SUB_LINE_SIZE = 112;
     private static final int ZERO = 0;
-    private static final String SERIALIZED_FILE_EXTENSION = ".ser";
 
     /**
      * Creates an instance of YANG io utils.
@@ -223,19 +210,6 @@
     }
 
     /**
-     * Adds generated source directory to the compilation root.
-     *
-     * @param source  directory
-     * @param project current maven project
-     * @param context current build context
-     */
-    public static void addToCompilationRoot(String source, MavenProject project, BuildContext context) {
-        project.addCompileSourceRoot(source);
-        context.refresh(project.getBasedir());
-        log.info("Source directory added to compilation root: " + source);
-    }
-
-    /**
      * Removes extra char from the string.
      *
      * @param valueString    string to be trimmed
@@ -303,49 +277,6 @@
     }
 
     /**
-     * Copies YANG files to the current project's output directory.
-     *
-     * @param yangFileInfo list of YANG files
-     * @param outputDir    project's output directory
-     * @param project      maven project
-     * @throws IOException when fails to copy files to destination resource directory
-     */
-    public static void copyYangFilesToTarget(Set<YangFileInfo> yangFileInfo, String outputDir, MavenProject project)
-            throws IOException {
-
-        List<File> files = getListOfFile(yangFileInfo);
-
-        String path = outputDir + TARGET_RESOURCE_PATH;
-        File targetDir = new File(path);
-        targetDir.mkdirs();
-
-        for (File file : files) {
-            Files.copy(file.toPath(),
-                    new File(path + file.getName()).toPath(),
-                    StandardCopyOption.REPLACE_EXISTING);
-        }
-        addToProjectResource(outputDir + SLASH + TEMP + SLASH, project);
-    }
-
-    /**
-     * Provides a list of files from list of strings.
-     *
-     * @param yangFileInfo set of yang file information
-     * @return list of files
-     */
-    private static List<File> getListOfFile(Set<YangFileInfo> yangFileInfo) {
-        List<File> files = new ArrayList<>();
-        Iterator<YangFileInfo> yangFileIterator = yangFileInfo.iterator();
-        while (yangFileIterator.hasNext()) {
-            YangFileInfo yangFile = yangFileIterator.next();
-            if (yangFile.isForTranslator()) {
-                files.add(new File(yangFile.getYangFileName()));
-            }
-        }
-        return files;
-    }
-
-    /**
      * Merges the temp java files to main java files.
      *
      * @param appendFile temp file
@@ -501,173 +432,258 @@
     }
 
     /**
-     * Serializes data-model.
+     * Returns the java Package from package path.
      *
-     * @param directory base directory for serialized files
-     * @param fileInfoSet YANG file info set
-     * @param project maven project
-     * @param operation true if need to add to resource
-     * @throws IOException when fails to do IO operations
+     * @param packagePath package path
+     * @return java package
      */
-    public static void serializeDataModel(String directory, Set<YangFileInfo> fileInfoSet,
-            MavenProject project, boolean operation) throws IOException {
-
-        String serFileDirPath = directory + TARGET_RESOURCE_PATH;
-        File dir = new File(serFileDirPath);
-        dir.mkdirs();
-
-        if (operation) {
-            addToProjectResource(directory + SLASH + TEMP + SLASH, project);
-        }
-
-        for (YangFileInfo fileInfo : fileInfoSet) {
-
-            String serFileName = serFileDirPath + getCamelCase(fileInfo.getRootNode().getName(), null)
-                    + SERIALIZED_FILE_EXTENSION;
-            fileInfo.setSerializedFile(serFileName);
-            FileOutputStream fileOutputStream = new FileOutputStream(serFileName);
-            ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
-            objectOutputStream.writeObject(fileInfo.getRootNode());
-            objectOutputStream.close();
-            fileOutputStream.close();
-        }
-    }
-
-    /* Adds directory to resources of project */
-    private static void addToProjectResource(String dir, MavenProject project) {
-        Resource rsc = new Resource();
-        rsc.setDirectory(dir);
-        project.addResource(rsc);
+    public static String getJavaPackageFromPackagePath(String packagePath) {
+        return packagePath.replace(SLASH, PERIOD);
     }
 
     /**
-     * Returns de-serializes YANG data-model nodes.
+     * Returns the directory path corresponding to java package.
      *
-     * @param serailizedfileInfoSet YANG file info set
-     * @return de-serializes YANG data-model nodes
-     * @throws IOException when fails do IO operations
+     * @param packagePath package path
+     * @return java package
      */
-    public static List<YangNode> deSerializeDataModel(List<String> serailizedfileInfoSet) throws IOException {
-
-        List<YangNode> nodes = new ArrayList<>();
-        for (String fileInfo : serailizedfileInfoSet) {
-            YangNode node = null;
-            try {
-                FileInputStream fileInputStream = new FileInputStream(fileInfo);
-                ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
-                node = (YangNode) objectInputStream.readObject();
-                nodes.add(node);
-                objectInputStream.close();
-                fileInputStream.close();
-            } catch (IOException | ClassNotFoundException e) {
-                throw new IOException(fileInfo + " not found.");
-            }
-        }
-        return nodes;
+    public static String getPackageDirPathFromJavaJPackage(String packagePath) {
+        return packagePath.replace(PERIOD, SLASH);
     }
 
     /**
-     * Resolves inter jar dependencies.
+     * Returns the YANG identifier name as java identifier with first letter
+     * in small.
      *
-     * @param project current maven project
-     * @param localRepository local maven repository
-     * @param remoteRepos list of remote repository
-     * @param directory directory for serialized files
-     * @return list of resolved datamodel nodes
-     * @throws IOException when fails to do IO operations
+     * @param yangIdentifier identifier in YANG file.
+     * @return corresponding java identifier
      */
-    public static List<YangNode> resolveInterJarDependencies(MavenProject project, ArtifactRepository localRepository,
-            List<ArtifactRepository> remoteRepos, String directory) throws IOException {
-
-        List<String> dependeciesJarPaths = resolveDependecyJarPath(project, localRepository, remoteRepos);
-        List<YangNode> resolvedDataModelNodes = new ArrayList<>();
-        for (String dependecy : dependeciesJarPaths) {
-            resolvedDataModelNodes.addAll(deSerializeDataModel(parseJarFile(dependecy, directory)));
-        }
-        return resolvedDataModelNodes;
+    public static String getSmallCase(String yangIdentifier) {
+        return yangIdentifier.substring(0, 1).toLowerCase() + yangIdentifier.substring(1);
     }
 
     /**
-     * Returns list of jar path.
+     * Returns the YANG identifier name as java identifier with first letter
+     * in capital.
      *
-     * @return list of jar paths
+     * @param yangIdentifier identifier in YANG file
+     * @return corresponding java identifier
      */
-    private static List<String> resolveDependecyJarPath(MavenProject project, ArtifactRepository localRepository,
-            List<ArtifactRepository> remoteRepos) {
-
-        StringBuilder path = new StringBuilder();
-        List<String> jarPaths = new ArrayList<>();
-        for (Dependency dependency : project.getDependencies()) {
-
-            path.append(localRepository.getBasedir());
-            path.append(SLASH);
-            path.append(getPackageDirPathFromJavaJPackage(dependency.getGroupId()));
-            path.append(SLASH);
-            path.append(dependency.getArtifactId());
-            path.append(SLASH);
-            path.append(dependency.getVersion());
-            path.append(SLASH);
-            path.append(dependency.getArtifactId() + HYPHEN + dependency.getVersion() + PERIOD + JAR);
-            File jarFile = new File(path.toString());
-            if (jarFile.exists()) {
-                jarPaths.add(path.toString());
-            }
-            path.delete(0, path.length());
-        }
-
-        for (ArtifactRepository repo : remoteRepos) {
-            // TODO: add resolver for remote repo.
-        }
-        return jarPaths;
+    public static String getCapitalCase(String yangIdentifier) {
+        yangIdentifier = yangIdentifier.substring(0, 1).toUpperCase() + yangIdentifier.substring(1);
+        return restrictConsecutiveCapitalCase(yangIdentifier);
     }
 
     /**
-     * Parses jar file and returns list of serialized file names.
+     * Restricts consecutive capital cased string as a rule in camel case.
      *
-     * @param jarFile jar file to be parsed
-     * @param directory directory for keeping the searized files
-     * @return list of serialized files
-     * @throws IOException when fails to do IO operations
+     * @param consecCapitalCaseRemover which requires the restriction of consecutive capital case
+     * @return string without consecutive capital case
      */
-    public static List<String> parseJarFile(String jarFile, String directory)
-            throws IOException {
+    public static String restrictConsecutiveCapitalCase(String consecCapitalCaseRemover) {
 
-        List<String> serailizedFiles = new ArrayList<>();
-        JarFile jar = new JarFile(jarFile);
-        Enumeration<?> enumEntries = jar.entries();
-
-        File serializedFileDir = new File(directory);
-        serializedFileDir.mkdirs();
-        while (enumEntries.hasMoreElements()) {
-            JarEntry file = (JarEntry) enumEntries.nextElement();
-            if (file.getName().endsWith(SERIALIZED_FILE_EXTENSION)) {
-                if (file.getName().contains(SLASH)) {
-                    String[] strArray = file.getName().split(SLASH);
-                    String tempPath = "";
-                    for (int i = 0; i < strArray.length - 1; i++) {
-                        tempPath = SLASH + tempPath + SLASH + strArray[i];
+        for (int k = 0; k < consecCapitalCaseRemover.length(); k++) {
+            if (k + 1 < consecCapitalCaseRemover.length()) {
+                if (Character.isUpperCase(consecCapitalCaseRemover.charAt(k))) {
+                    if (Character.isUpperCase(consecCapitalCaseRemover.charAt(k + 1))) {
+                        consecCapitalCaseRemover = consecCapitalCaseRemover.substring(0, k + 1)
+                                + consecCapitalCaseRemover.substring(k + 1, k + 2).toLowerCase()
+                                + consecCapitalCaseRemover.substring(k + 2);
                     }
-                    File dir = new File(directory + tempPath);
-                    dir.mkdirs();
                 }
-                File serailizedFile = new File(directory + SLASH + file.getName());
-                if (file.isDirectory()) {
-                    serailizedFile.mkdirs();
-                    continue;
-                }
-                InputStream inputStream = jar.getInputStream(file);
-
-                FileOutputStream fileOutputStream = new FileOutputStream(serailizedFile);
-                while (inputStream.available() > 0) {
-                    fileOutputStream.write(inputStream.read());
-                }
-                fileOutputStream.close();
-                inputStream.close();
-                serailizedFiles.add(serailizedFile.toString());
             }
         }
-        jar.close();
-        return serailizedFiles;
+        return consecCapitalCaseRemover;
     }
 
+    /**
+     * Adds prefix, if the string begins with digit or is a java key word.
+     *
+     * @param camelCasePrefix string for adding prefix
+     * @param conflictResolver object of YANG to java naming conflict util
+     * @return prefixed camel case string
+     */
+    public static String addPrefix(String camelCasePrefix, YangToJavaNamingConflictUtil conflictResolver) {
+
+        String prefix = getPrefixForIdentifier(conflictResolver);
+        if (camelCasePrefix.matches(REGEX_FOR_FIRST_DIGIT)) {
+            camelCasePrefix = prefix + camelCasePrefix;
+        }
+        if (JAVA_KEY_WORDS.contains(camelCasePrefix)) {
+            camelCasePrefix = prefix + camelCasePrefix.substring(0, 1).toUpperCase()
+                    + camelCasePrefix.substring(1);
+        }
+        return camelCasePrefix;
+    }
+
+    /**
+     * Applies the rule that a string does not end with a capitalized letter and capitalizes
+     * the letter next to a number in an array.
+     *
+     * @param stringArray containing strings for camel case separation
+     * @param conflictResolver object of YANG to java naming conflict util
+     * @return camel case rule checked string
+     */
+    public static String applyCamelCaseRule(String[] stringArray, YangToJavaNamingConflictUtil conflictResolver) {
+
+        String ruleChecker = stringArray[0].toLowerCase();
+        int i;
+        if (ruleChecker.matches(REGEX_FOR_FIRST_DIGIT)) {
+            i = 0;
+            ruleChecker = EMPTY_STRING;
+        } else {
+            i = 1;
+        }
+        for (; i < stringArray.length; i++) {
+            if (i + 1 == stringArray.length) {
+                if (stringArray[i].matches(REGEX_FOR_SINGLE_LETTER)
+                        || stringArray[i].matches(REGEX_FOR_DIGITS_WITH_SINGLE_LETTER)) {
+                    ruleChecker = ruleChecker + stringArray[i].toLowerCase();
+                    break;
+                }
+            }
+            if (stringArray[i].matches(REGEX_FOR_FIRST_DIGIT)) {
+                for (int j = 0; j < stringArray[i].length(); j++) {
+                    char letterCheck = stringArray[i].charAt(j);
+                    if (Character.isLetter(letterCheck)) {
+                        stringArray[i] = stringArray[i].substring(0, j)
+                                + stringArray[i].substring(j, j + 1).toUpperCase() + stringArray[i].substring(j + 1);
+                        break;
+                    }
+                }
+                ruleChecker = ruleChecker + stringArray[i];
+            } else {
+                ruleChecker = ruleChecker + stringArray[i].substring(0, 1).toUpperCase() + stringArray[i].substring(1);
+            }
+        }
+        String ruleCheckerWithPrefix = addPrefix(ruleChecker, conflictResolver);
+        return restrictConsecutiveCapitalCase(ruleCheckerWithPrefix);
+    }
+
+    /**
+     * Resolves the conflict when input has upper case.
+     *
+     * @param stringArray containing strings for upper case conflict resolver
+     * @param conflictResolver object of YANG to java naming conflict util
+     * @return camel cased string
+     */
+    public static String upperCaseConflictResolver(String[] stringArray,
+                                                   YangToJavaNamingConflictUtil conflictResolver) {
+
+        for (int l = 0; l < stringArray.length; l++) {
+            String[] upperCaseSplitArray = stringArray[l].split(REGEX_WITH_UPPERCASE);
+            for (int m = 0; m < upperCaseSplitArray.length; m++) {
+                if (upperCaseSplitArray[m].matches(REGEX_WITH_SINGLE_CAPITAL_CASE)) {
+                    int check = m;
+                    while (check + 1 < upperCaseSplitArray.length) {
+                        if (upperCaseSplitArray[check + 1].matches(REGEX_WITH_SINGLE_CAPITAL_CASE)) {
+                            upperCaseSplitArray[check + 1] = upperCaseSplitArray[check + 1].toLowerCase();
+                            check = check + 1;
+                        } else if (upperCaseSplitArray[check + 1]
+                                .matches(REGEX_WITH_SINGLE_CAPITAL_CASE_AND_DIGITS_SMALL_CASES)) {
+                            upperCaseSplitArray[check + 1] = upperCaseSplitArray[check + 1].toLowerCase();
+                            break;
+                        } else {
+                            break;
+                        }
+                    }
+                }
+            }
+            StringBuilder strBuilder = new StringBuilder();
+            for (String element : upperCaseSplitArray) {
+                strBuilder.append(element);
+            }
+            stringArray[l] = strBuilder.toString();
+        }
+        List<String> result = new ArrayList<String>();
+        for (String element : stringArray) {
+            String[] capitalCaseSplitArray = element.split(REGEX_WITH_UPPERCASE);
+            for (String letter : capitalCaseSplitArray) {
+                String[] arrayForAddition = letter.split(REGEX_WITH_DIGITS);
+                List<String> list = Arrays.asList(arrayForAddition);
+                for (String str : list) {
+                    if (str != null && !str.isEmpty()) {
+                        result.add(str);
+                    }
+                }
+            }
+        }
+        stringArray = result.toArray(new String[result.size()]);
+        return applyCamelCaseRule(stringArray, conflictResolver);
+    }
+
+    /**
+     * Returns the YANG identifier name as java identifier.
+     *
+     * @param yangIdentifier identifier in YANG file
+     * @param conflictResolver object of YANG to java naming conflict util
+     * @return corresponding java identifier
+     */
+    public static String getCamelCase(String yangIdentifier, YangToJavaNamingConflictUtil conflictResolver) {
+
+        if (conflictResolver != null) {
+            String replacementForHyphen = conflictResolver.getReplacementForHyphen();
+            String replacementForPeriod = conflictResolver.getReplacementForPeriod();
+            String replacementForUnderscore = conflictResolver.getReplacementForUnderscore();
+            if (replacementForPeriod != null) {
+                yangIdentifier = yangIdentifier.replaceAll(REGEX_FOR_PERIOD,
+                        PERIOD + replacementForPeriod.toLowerCase() + PERIOD);
+            }
+            if (replacementForUnderscore != null) {
+                yangIdentifier = yangIdentifier.replaceAll(REGEX_FOR_UNDERSCORE,
+                        UNDER_SCORE + replacementForUnderscore.toLowerCase() + UNDER_SCORE);
+            }
+            if (replacementForHyphen != null) {
+                yangIdentifier = yangIdentifier.replaceAll(REGEX_FOR_HYPHEN,
+                        HYPHEN + replacementForHyphen.toLowerCase() + HYPHEN);
+            }
+        }
+        yangIdentifier = yangIdentifier.replaceAll(REGEX_FOR_IDENTIFIER_SPECIAL_CHAR, COLAN);
+        String[] strArray = yangIdentifier.split(COLAN);
+        if (strArray[0].isEmpty()) {
+            List<String> stringArrangement = new ArrayList<String>();
+            for (int i = 1; i < strArray.length; i++) {
+                stringArrangement.add(strArray[i]);
+            }
+            strArray = stringArrangement.toArray(new String[stringArrangement.size()]);
+        }
+        return upperCaseConflictResolver(strArray, conflictResolver);
+    }
+
+    /**
+     * Prefix for adding with identifier and namespace, when it is a java keyword or starting with digits.
+     *
+     * @param conflictResolver object of YANG to java naming conflict util
+     * @return prefix which needs to be added
+     */
+    public static String getPrefixForIdentifier(YangToJavaNamingConflictUtil conflictResolver) {
+
+        String prefixForIdentifier = null;
+        if (conflictResolver != null) {
+            prefixForIdentifier = conflictResolver.getPrefixForIdentifier();
+        }
+        if (prefixForIdentifier != null) {
+            prefixForIdentifier = prefixForIdentifier.replaceAll(REGEX_WITH_ALL_SPECIAL_CHAR, COLAN);
+            String[] strArray = prefixForIdentifier.split(COLAN);
+            try {
+                if (strArray[0].isEmpty()) {
+                    List<String> stringArrangement = new ArrayList<String>();
+                    for (int i = 1; i < strArray.length; i++) {
+                        stringArrangement.add(strArray[i]);
+                    }
+                    strArray = stringArrangement.toArray(new String[stringArrangement.size()]);
+                }
+                prefixForIdentifier = strArray[0];
+                for (int j = 1; j < strArray.length; j++) {
+                    prefixForIdentifier = prefixForIdentifier + strArray[j].substring(0, 1).toUpperCase() +
+                            strArray[j].substring(1);
+                }
+            } catch (ArrayIndexOutOfBoundsException outOfBoundsException) {
+                throw new TranslatorException("The given prefix in pom.xml is invalid.");
+            }
+        } else {
+            prefixForIdentifier = YANG_AUTO_PREFIX;
+        }
+        return prefixForIdentifier;
+    }
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangPluginConfig.java b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangPluginConfig.java
similarity index 96%
rename from plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangPluginConfig.java
rename to plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangPluginConfig.java
index f827698..21314ef 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangPluginConfig.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangPluginConfig.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.yangutils.translator.tojava.utils;
+package org.onosproject.yangutils.utils.io.impl;
 
 /**
  * Representation of plugin configurations required for YANG utils.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangToJavaNamingConflictUtil.java b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangToJavaNamingConflictUtil.java
similarity index 97%
rename from plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangToJavaNamingConflictUtil.java
rename to plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangToJavaNamingConflictUtil.java
index 4f701b6..d7b32e9 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangToJavaNamingConflictUtil.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangToJavaNamingConflictUtil.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.yangutils.translator.tojava.utils;
+package org.onosproject.yangutils.utils.io.impl;
 
 /**
  * Representation of YANG to java naming conflict resolver util.