diff --git a/core/api/src/main/java/org/onlab/onos/store/service/BatchReadRequest.java b/core/api/src/main/java/org/onlab/onos/store/service/BatchReadRequest.java
index 1cf422c..ecd9168 100644
--- a/core/api/src/main/java/org/onlab/onos/store/service/BatchReadRequest.java
+++ b/core/api/src/main/java/org/onlab/onos/store/service/BatchReadRequest.java
@@ -8,63 +8,63 @@
 /**
  * Collection of read requests to be submitted as one batch.
  */
-public class BatchReadRequest {
+public final class BatchReadRequest {
 
-	private final List<ReadRequest> readRequests;
+    private final List<ReadRequest> readRequests;
 
-	/**
-	 * Creates a new BatchReadRequest object from the specified list of read requests.
-	 * @param readRequests read requests.
-	 * @return BatchReadRequest object.
-	 */
-	public static BatchReadRequest create(List<ReadRequest> readRequests) {
-		return new BatchReadRequest(readRequests);
-	}
+    /**
+     * Creates a new BatchReadRequest object from the specified list of read requests.
+     * @param readRequests read requests.
+     * @return BatchReadRequest object.
+     */
+    public static BatchReadRequest create(List<ReadRequest> readRequests) {
+        return new BatchReadRequest(readRequests);
+    }
 
-	private BatchReadRequest(List<ReadRequest> readRequests) {
-		this.readRequests = Collections.unmodifiableList(readRequests);
-	}
+    private BatchReadRequest(List<ReadRequest> readRequests) {
+        this.readRequests = Collections.unmodifiableList(readRequests);
+    }
 
-	/**
-	 * Returns the number of requests in this batch.
-	 * @return size of request batch.
-	 */
-	public int batchSize() {
-		return readRequests.size();
-	}
+    /**
+     * Returns the number of requests in this batch.
+     * @return size of request batch.
+     */
+    public int batchSize() {
+        return readRequests.size();
+    }
 
-	/**
-	 * Returns the requests in this batch as a list.
-	 * @return list of read requests
-	 */
-	public List<ReadRequest> getAsList() {
-		return readRequests;
-	}
+    /**
+     * Returns the requests in this batch as a list.
+     * @return list of read requests
+     */
+    public List<ReadRequest> getAsList() {
+        return readRequests;
+    }
 
-	/**
-	 * Builder for BatchReadRequest.
-	 */
-	public static class Builder {
+    /**
+     * Builder for BatchReadRequest.
+     */
+    public static class Builder {
 
-		private final List<ReadRequest> readRequests = Lists.newLinkedList();
+        private final List<ReadRequest> readRequests = Lists.newLinkedList();
 
-		/**
-		 * Append a get request.
-		 * @param tableName table name
-		 * @param key key to fetch.
-		 * @return this Builder
-		 */
-		public Builder get(String tableName, String key) {
-			readRequests.add(new ReadRequest(tableName, key));
-			return this;
-		}
+        /**
+         * Append a get request.
+         * @param tableName table name
+         * @param key key to fetch.
+         * @return this Builder
+         */
+        public Builder get(String tableName, String key) {
+            readRequests.add(new ReadRequest(tableName, key));
+            return this;
+        }
 
-		/**
-		 * Builds a BatchReadRequest
-		 * @return BatchReadRequest
-		 */
-		public BatchReadRequest build() {
-			return new BatchReadRequest(readRequests);
-		}
-	}
-}
\ No newline at end of file
+        /**
+         * Builds a BatchReadRequest.
+         * @return BatchReadRequest
+         */
+        public BatchReadRequest build() {
+            return new BatchReadRequest(readRequests);
+        }
+    }
+}
