diff --git a/libraries-data-2/README.md b/libraries-data-2/README.md
new file mode 100644
index 0000000000..8101138c0e
--- /dev/null
+++ b/libraries-data-2/README.md
@@ -0,0 +1,11 @@
+### Relevant articles
+- [Introduction to Apache Flink with Java](http://www.baeldung.com/apache-flink)
+- [Guide to the HyperLogLog Algorithm](http://www.baeldung.com/java-hyperloglog)
+- [Introduction to Conflict-Free Replicated Data Types](http://www.baeldung.com/java-conflict-free-replicated-data-types)
+- [Introduction to javax.measure](http://www.baeldung.com/javax-measure)
+- [Introduction To Docx4J](http://www.baeldung.com/docx4j)
+- [Interact with Google Sheets from Java](http://www.baeldung.com/google-sheets-java-client)
+- [Introduction To OpenCSV](http://www.baeldung.com/opencsv)
+- [Introduction to Smooks](http://www.baeldung.com/smooks)
+- [A Guide to Infinispan in Java](http://www.baeldung.com/infinispan)
+
diff --git a/libraries-data-2/log4j.properties b/libraries-data-2/log4j.properties
new file mode 100644
index 0000000000..2173c5d96f
--- /dev/null
+++ b/libraries-data-2/log4j.properties
@@ -0,0 +1 @@
+log4j.rootLogger=INFO, stdout
diff --git a/libraries-data-2/pom.xml b/libraries-data-2/pom.xml
new file mode 100644
index 0000000000..97820859ba
--- /dev/null
+++ b/libraries-data-2/pom.xml
@@ -0,0 +1,128 @@
+
+
+
+ 4.0.0
+ libraries-http
+ libraries-http
+
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
+
+
+
+ org.apache.flink
+ flink-connector-kafka-0.11_2.11
+ ${flink.version}
+
+
+ org.apache.flink
+ flink-streaming-java_2.11
+ ${flink.version}
+
+
+ org.apache.flink
+ flink-core
+ ${flink.version}
+
+
+ commons-logging
+ commons-logging
+
+
+
+
+ org.apache.flink
+ flink-java
+ ${flink.version}
+
+
+ commons-logging
+ commons-logging
+
+
+
+
+ org.apache.flink
+ flink-test-utils_2.11
+ ${flink.version}
+ test
+
+
+ net.agkn
+ hll
+ ${hll.version}
+
+
+ com.netopyr.wurmloch
+ wurmloch-crdt
+ ${crdt.version}
+
+
+ tec.units
+ unit-ri
+ ${unit-ri.version}
+
+
+ javax.xml.bind
+ jaxb-api
+ ${jaxb-api.version}
+
+
+ org.docx4j
+ docx4j
+ ${docx4j.version}
+
+
+
+ com.google.api-client
+ google-api-client
+ ${google-api.version}
+
+
+ com.google.oauth-client
+ google-oauth-client-jetty
+ ${google-api.version}
+
+
+ com.google.apis
+ google-api-services-sheets
+ ${google-sheets.version}
+
+
+
+ com.opencsv
+ opencsv
+ ${opencsv.version}
+
+
+ org.milyn
+ milyn-smooks-all
+ ${smooks.version}
+
+
+ org.infinispan
+ infinispan-core
+ ${infinispan.version}
+
+
+
+
+
+ 1.5.0
+ 1.6.0
+ 0.1.0
+ 1.0.3
+ 3.3.5
+ 2.1
+ 1.23.0
+ 4.1
+ 1.7.0
+ 9.1.5.Final
+ v4-rev493-1.21.0
+
+
\ No newline at end of file
diff --git a/libraries-data-2/src/main/com/baeldung/docx/Docx4jExample.java b/libraries-data-2/src/main/com/baeldung/docx/Docx4jExample.java
new file mode 100644
index 0000000000..6fe29d26e3
--- /dev/null
+++ b/libraries-data-2/src/main/com/baeldung/docx/Docx4jExample.java
@@ -0,0 +1,105 @@
+package com.baeldung.docx;
+
+import org.docx4j.dml.wordprocessingDrawing.Inline;
+import org.docx4j.jaxb.Context;
+import org.docx4j.model.table.TblFactory;
+import org.docx4j.openpackaging.exceptions.Docx4JException;
+import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
+import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage;
+import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
+import org.docx4j.wml.BooleanDefaultTrue;
+import org.docx4j.wml.Color;
+import org.docx4j.wml.Drawing;
+import org.docx4j.wml.ObjectFactory;
+import org.docx4j.wml.P;
+import org.docx4j.wml.R;
+import org.docx4j.wml.RPr;
+import org.docx4j.wml.Tbl;
+import org.docx4j.wml.Tc;
+import org.docx4j.wml.Text;
+import org.docx4j.wml.Tr;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import java.io.File;
+import java.nio.file.Files;
+import java.util.List;
+
+class Docx4jExample {
+
+ void createDocumentPackage(String outputPath, String imagePath) throws Exception {
+ WordprocessingMLPackage wordPackage = WordprocessingMLPackage.createPackage();
+ MainDocumentPart mainDocumentPart = wordPackage.getMainDocumentPart();
+ mainDocumentPart.addStyledParagraphOfText("Title", "Hello World!");
+ mainDocumentPart.addParagraphOfText("Welcome To Baeldung!");
+
+ ObjectFactory factory = Context.getWmlObjectFactory();
+ P p = factory.createP();
+ R r = factory.createR();
+ Text t = factory.createText();
+ t.setValue("Welcome To Baeldung");
+ r.getContent().add(t);
+ p.getContent().add(r);
+ RPr rpr = factory.createRPr();
+ BooleanDefaultTrue b = new BooleanDefaultTrue();
+ rpr.setB(b);
+ rpr.setI(b);
+ rpr.setCaps(b);
+ Color red = factory.createColor();
+ red.setVal("green");
+ rpr.setColor(red);
+ r.setRPr(rpr);
+ mainDocumentPart.getContent().add(p);
+
+ File image = new File(imagePath);
+ byte[] fileContent = Files.readAllBytes(image.toPath());
+ BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordPackage, fileContent);
+ Inline inline = imagePart.createImageInline("Baeldung Image", "Alt Text", 1, 2, false);
+ P Imageparagraph = addImageToParagraph(inline);
+ mainDocumentPart.getContent().add(Imageparagraph);
+
+ int writableWidthTwips = wordPackage.getDocumentModel().getSections().get(0).getPageDimensions().getWritableWidthTwips();
+ int columnNumber = 3;
+ Tbl tbl = TblFactory.createTable(3, 3, writableWidthTwips / columnNumber);
+ List