diff --git a/tarantool/pom.xml b/tarantool/pom.xml
index 6754818e8fb18dcfc40b0d7ae5cea742839f8540..b8818f586facfd87a50ac4266a6cafeeb620332a 100644
--- a/tarantool/pom.xml
+++ b/tarantool/pom.xml
@@ -47,4 +47,29 @@ LICENSE file.
       <scope>provided</scope>
     </dependency>
   </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <version>2.15</version>
+        <configuration>
+          <consoleOutput>true</consoleOutput>
+          <configLocation>../checkstyle.xml</configLocation>
+          <failOnViolation>true</failOnViolation>
+          <failsOnError>true</failsOnError>
+        </configuration>
+        <executions>
+          <execution>
+            <id>validate</id>
+            <phase>validate</phase>
+            <goals>
+              <goal>checkstyle</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
diff --git a/tarantool/src/main/java/com/yahoo/ycsb/db/TarantoolClient.java b/tarantool/src/main/java/com/yahoo/ycsb/db/TarantoolClient.java
index b90dff119296ebde7a0fdf99b6138086a39f90db..e86120e1cfb10987d25497a01508e860a0a360d0 100644
--- a/tarantool/src/main/java/com/yahoo/ycsb/db/TarantoolClient.java
+++ b/tarantool/src/main/java/com/yahoo/ycsb/db/TarantoolClient.java
@@ -1,12 +1,12 @@
 /**
- * Copyright (c) 2014, Yahoo!, Inc. All rights reserved.
- *
+ * Copyright (c) 2014 - 2016 YCSB Contributors. All rights reserved.
+ * <p>
  * 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
- *
+ * <p>
  * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * <p>
  * 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
@@ -16,162 +16,137 @@
  */
 package com.yahoo.ycsb.db;
 
-import com.yahoo.ycsb.ByteIterator;
-import com.yahoo.ycsb.DB;
-import com.yahoo.ycsb.DBException;
-import com.yahoo.ycsb.Status;
-import com.yahoo.ycsb.StringByteIterator;
-
+import com.yahoo.ycsb.*;
 import org.tarantool.TarantoolConnection16;
 import org.tarantool.TarantoolConnection16Impl;
 import org.tarantool.TarantoolException;
 
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.Vector;
+import java.util.*;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+/**
+ * YCSB binding for <a href="http://tarantool.org/">Tarantool</a>.
+ */
 public class TarantoolClient extends DB {
-
-	public static final String HOST_PROPERTY  = "tarantool.host";
-	public static final String PORT_PROPERTY  = "tarantool.port";
-	public static final String SPACE_PROPERTY = "tarantool.space";
-
-	public static final String DEFAULT_HOST   = "localhost";
-	public static final int    DEFAULT_PORT   = 3301;
-	public static final int    DEFAULT_SPACE  = 1024;
-
-	private static final Logger logger = Logger.getLogger(TarantoolClient.class.getName());
-	private TarantoolConnection16 connection;
-	private int spaceNo;
-
-	public void init() throws DBException {
-		Properties props = getProperties();
-
-		int port = DEFAULT_PORT;
-		String portString = props.getProperty(PORT_PROPERTY);
-		if (portString != null) {
-			port = Integer.parseInt(portString);
-		}
-
-		String host = props.getProperty(HOST_PROPERTY);
-		if (host == null) {
-			host = DEFAULT_HOST;
-		}
-
-		spaceNo = DEFAULT_SPACE;
-		String spaceString = props.getProperty(SPACE_PROPERTY);
-		if (spaceString != null) {
-			spaceNo = Integer.parseInt(spaceString);
-		}
-
-		try {
-			this.connection = new TarantoolConnection16Impl(host, port);
-		} catch (Exception exc) {
-			logger.log(Level.SEVERE,"Can't initialize Tarantool connection", exc);
-			return;
-		}
-	}
-
-	public void cleanup() throws DBException{
-		this.connection.close();
-	}
-
-	@Override
-	public Status insert(String table, String key, HashMap<String, ByteIterator> values) {
-		return replace(key, values, "Can't insert element");
-	}
-
-	private HashMap<String, ByteIterator> tuple_convert_filter (List<String> input,
-			Set<String> fields) {
-		HashMap<String, ByteIterator> result = new HashMap<String, ByteIterator>();
-		if (input == null)
-			return result;
-		for (int i = 1; i < input.toArray().length; i += 2)
-			if (fields == null || fields.contains(input.get(i)))
-				result.put(input.get(i), new StringByteIterator(input.get(i+1)));
-		return result;
-	}
-
-	@Override
-	public Status read(String table, String key, Set<String> fields,
-			HashMap<String, ByteIterator> result) {
-		try {
-			List<String> response;
-			response = this.connection.select(this.spaceNo, 0, Arrays.asList(key), 0, 1, 0);
-			result = tuple_convert_filter(response, fields);
-			return Status.OK;
-		} catch (TarantoolException exc) {
-			logger.log(Level.SEVERE,"Can't select element", exc);
-			return Status.ERROR;
-		} catch (NullPointerException exc) {
-			return Status.ERROR;
-		}
-	}
-
-	@Override
-	public Status scan(String table, String startkey,
-			int recordcount, Set<String> fields,
-			Vector<HashMap<String, ByteIterator>> result) {
-		List<List<String>> response;
-		try {
-			response = this.connection.select(this.spaceNo, 0, Arrays.asList(startkey), 0, recordcount, 6);
-		} catch (TarantoolException exc) {
-			logger.log(Level.SEVERE,"Can't select range elements", exc);
-			return Status.ERROR;
-		} catch (NullPointerException exc) {
-			return Status.ERROR;
-		}
-		for(List<String> i: response) {
-			HashMap<String, ByteIterator> temp = tuple_convert_filter(i, fields);
-			if (!temp.isEmpty())
-				result.add((HashMap<String, ByteIterator>) temp.clone());
-		}
-		return Status.OK;
-	}
-
-	@Override
-	public Status delete(String table, String key) {
-		try {
-			this.connection.delete(this.spaceNo, Arrays.asList(key));
-		} catch (TarantoolException exc) {
-			logger.log(Level.SEVERE,"Can't delete element", exc);
-			return Status.ERROR;
-		} catch (NullPointerException e) {
-			return Status.ERROR;
-		}
-		return Status.OK;
-	}
-	@Override
-	public Status update(String table, String key,
-			HashMap<String, ByteIterator> values) {
-		return replace(key, values, "Can't replace element");
-
-	}
-
-	private Status replace(String key,
-						  HashMap<String, ByteIterator> values,
-						  String exceptionDescription) {
-		int j = 0;
-		String[] tuple = new String[1 + 2 * values.size()];
-		tuple[0] = key;
-		for (Map.Entry<String, ByteIterator> i: values.entrySet()) {
-			tuple[j + 1] = i.getKey();
-			tuple[j + 2] = i.getValue().toString();
-			j += 2;
-		}
-		try {
-			this.connection.replace(this.spaceNo, tuple);
-		} catch (TarantoolException exc) {
-			logger.log(Level.SEVERE,exceptionDescription, exc);
-			return Status.ERROR;
-		}
-		return Status.OK;
-
-	}
+  private static final Logger LOGGER = Logger.getLogger(TarantoolClient.class.getName());
+
+  private static final String HOST_PROPERTY = "tarantool.host";
+  private static final String PORT_PROPERTY = "tarantool.port";
+  private static final String SPACE_PROPERTY = "tarantool.space";
+  private static final String DEFAULT_HOST = "localhost";
+  private static final String DEFAULT_PORT = "3301";
+  private static final String DEFAULT_SPACE = "1024";
+
+  private TarantoolConnection16 connection;
+  private int spaceNo;
+
+  public void init() throws DBException {
+    Properties props = getProperties();
+
+    int port = Integer.parseInt(props.getProperty(PORT_PROPERTY, DEFAULT_PORT));
+    String host = props.getProperty(HOST_PROPERTY, DEFAULT_HOST);
+    spaceNo = Integer.parseInt(props.getProperty(SPACE_PROPERTY, DEFAULT_SPACE));
+
+    try {
+      this.connection = new TarantoolConnection16Impl(host, port);
+    } catch (Exception exc) {
+      throw new DBException("Can't initialize Tarantool connection", exc);
+    }
+  }
+
+  public void cleanup() throws DBException {
+    this.connection.close();
+  }
+
+  @Override
+  public Status insert(String table, String key, HashMap<String, ByteIterator> values) {
+    return replace(key, values, "Can't insert element");
+  }
+
+  private HashMap<String, ByteIterator> tupleConvertFilter(List<String> input, Set<String> fields) {
+    HashMap<String, ByteIterator> result = new HashMap<>();
+    if (input == null) {
+      return result;
+    }
+    for (int i = 1; i < input.toArray().length; i += 2) {
+      if (fields == null || fields.contains(input.get(i))) {
+        result.put(input.get(i), new StringByteIterator(input.get(i + 1)));
+      }
+    }
+    return result;
+  }
+
+  @Override
+  public Status read(String table, String key, Set<String> fields, HashMap<String, ByteIterator> result) {
+    try {
+      List<String> response = this.connection.select(this.spaceNo, 0, Arrays.asList(key), 0, 1, 0);
+      result = tupleConvertFilter(response, fields);
+      return Status.OK;
+    } catch (TarantoolException exc) {
+      LOGGER.log(Level.SEVERE, "Can't select element", exc);
+      return Status.ERROR;
+    } catch (NullPointerException exc) {
+      return Status.ERROR;
+    }
+  }
+
+  @Override
+  public Status scan(String table, String startkey,
+                     int recordcount, Set<String> fields,
+                     Vector<HashMap<String, ByteIterator>> result) {
+    List<List<String>> response;
+    try {
+      response = this.connection.select(this.spaceNo, 0, Arrays.asList(startkey), 0, recordcount, 6);
+    } catch (TarantoolException exc) {
+      LOGGER.log(Level.SEVERE, "Can't select range elements", exc);
+      return Status.ERROR;
+    } catch (NullPointerException exc) {
+      return Status.ERROR;
+    }
+    for (List<String> i : response) {
+      HashMap<String, ByteIterator> temp = tupleConvertFilter(i, fields);
+      if (!temp.isEmpty()) {
+        result.add((HashMap<String, ByteIterator>) temp.clone());
+      }
+    }
+    return Status.OK;
+  }
+
+  @Override
+  public Status delete(String table, String key) {
+    try {
+      this.connection.delete(this.spaceNo, Collections.singletonList(key));
+    } catch (TarantoolException exc) {
+      LOGGER.log(Level.SEVERE, "Can't delete element", exc);
+      return Status.ERROR;
+    } catch (NullPointerException e) {
+      return Status.ERROR;
+    }
+    return Status.OK;
+  }
+
+  @Override
+  public Status update(String table, String key, HashMap<String, ByteIterator> values) {
+    return replace(key, values, "Can't replace element");
+  }
+
+  private Status replace(String key, HashMap<String, ByteIterator> values, String exceptionDescription) {
+    int j = 0;
+    String[] tuple = new String[1 + 2 * values.size()];
+    tuple[0] = key;
+    for (Map.Entry<String, ByteIterator> i : values.entrySet()) {
+      tuple[j + 1] = i.getKey();
+      tuple[j + 2] = i.getValue().toString();
+      j += 2;
+    }
+    try {
+      this.connection.replace(this.spaceNo, tuple);
+    } catch (TarantoolException exc) {
+      LOGGER.log(Level.SEVERE, exceptionDescription, exc);
+      return Status.ERROR;
+    }
+    return Status.OK;
+
+  }
 }
diff --git a/tarantool/src/main/java/com/yahoo/ycsb/db/package-info.java b/tarantool/src/main/java/com/yahoo/ycsb/db/package-info.java
new file mode 100644
index 0000000000000000000000000000000000000000..1f34b7c99cfda4b48d8c10fc01311291705101fb
--- /dev/null
+++ b/tarantool/src/main/java/com/yahoo/ycsb/db/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2014 - 2016 YCSB Contributors. All rights reserved.
+ *
+ * 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. See accompanying
+ * LICENSE file.
+ */
+
+/**
+ * YCSB binding for <a href="http://tarantool.org/">Tarantool</a>.
+ */
+package com.yahoo.ycsb.db;
+