diff --git a/README.md b/README.md
index b2a2974..6809fc4 100644
--- a/README.md
+++ b/README.md
@@ -898,7 +898,7 @@
 
 #### 2. When the source data is in Kafka. ####
  
-assumes that data is bulk loading format and constantly comming into Kafka MQ.
+assumes that data is bulk loading format and constantly coming into Kafka MQ.
 
  - run subscriber.GraphSubscriberStreaming to extract and load into s2graph from kafka topic.
  - make sure how many edges are parsed/stored by looking at Spark UI.
@@ -1094,5 +1094,4 @@
 | 1 | 20 | 10 | 10 | 20 | 83.2TPS | 238.42ms | 
 | 1 | 10 | 10 | 10 | 20 | 82.6TPS | 120.16ms | 
 
-
 [![Analytics](https://ga-beacon.appspot.com/UA-62888350-1/s2graph/readme.md)](https://github.com/daumkakao/s2graph)
diff --git a/asynchbase/src/Bytes.java b/asynchbase/src/Bytes.java
index d2bbf61..3c8d1bb 100644
--- a/asynchbase/src/Bytes.java
+++ b/asynchbase/src/Bytes.java
@@ -55,7 +55,7 @@
   // ------------------------------ //
 
   /**
-   * Reads a big-endian 2-byte short from the begining of the given array.
+   * Reads a big-endian 2-byte short from the beginning of the given array.
    * @param b The array to read from.
    * @return A short integer.
    * @throws IndexOutOfBoundsException if the byte array is too small.
@@ -76,7 +76,7 @@
   }
 
   /**
-   * Reads a big-endian 2-byte unsigned short from the begining of the
+   * Reads a big-endian 2-byte unsigned short from the beginning of the
    * given array.
    * @param b The array to read from.
    * @return A positive short integer.
@@ -99,7 +99,7 @@
   }
 
   /**
-   * Writes a big-endian 2-byte short at the begining of the given array.
+   * Writes a big-endian 2-byte short at the beginning of the given array.
    * @param b The array to write to.
    * @param n A short integer.
    * @throws IndexOutOfBoundsException if the byte array is too small.
@@ -132,7 +132,7 @@
   }
 
   /**
-   * Reads a big-endian 4-byte integer from the begining of the given array.
+   * Reads a big-endian 4-byte integer from the beginning of the given array.
    * @param b The array to read from.
    * @return An integer.
    * @throws IndexOutOfBoundsException if the byte array is too small.
@@ -156,7 +156,7 @@
   }
 
   /**
-   * Reads a big-endian 4-byte unsigned integer from the begining of the
+   * Reads a big-endian 4-byte unsigned integer from the beginning of the
    * given array.
    * @param b The array to read from.
    * @return A positive integer.
@@ -179,7 +179,7 @@
   }
 
   /**
-   * Writes a big-endian 4-byte int at the begining of the given array.
+   * Writes a big-endian 4-byte int at the beginning of the given array.
    * @param b The array to write to.
    * @param n An integer.
    * @throws IndexOutOfBoundsException if the byte array is too small.
@@ -213,7 +213,7 @@
   }
 
   /**
-   * Reads a big-endian 8-byte long from the begining of the given array.
+   * Reads a big-endian 8-byte long from the beginning of the given array.
    * @param b The array to read from.
    * @return A long integer.
    * @throws IndexOutOfBoundsException if the byte array is too small.
@@ -241,7 +241,7 @@
   }
 
   /**
-   * Writes a big-endian 8-byte long at the begining of the given array.
+   * Writes a big-endian 8-byte long at the beginning of the given array.
    * @param b The array to write to.
    * @param n A long integer.
    * @throws IndexOutOfBoundsException if the byte array is too small.
diff --git a/asynchbase/src/ColumnPaginationFilter.java b/asynchbase/src/ColumnPaginationFilter.java
index b6eb5cf..6e8082e 100644
--- a/asynchbase/src/ColumnPaginationFilter.java
+++ b/asynchbase/src/ColumnPaginationFilter.java
@@ -63,7 +63,7 @@
    * Initializes filter with a string/bookmark based offset and limit. The offset is arrived
    * at, by seeking to it using scanner hints. If multiple column families are involved,
    * pagination starts at the first column family which contains @columnOffset. Columns are
-   * then retrieved sequentially upto @limit number of columns which maybe spread across
+   * then retrieved sequentially up to @limit number of columns which maybe spread across
    * multiple column families, depending on how the scan is setup.
    *
    * Only supported with HBase 0.96 and greater.
diff --git a/asynchbase/src/HBaseClient.java b/asynchbase/src/HBaseClient.java
index ce6bb79..b3ef2f3 100644
--- a/asynchbase/src/HBaseClient.java
+++ b/asynchbase/src/HBaseClient.java
@@ -724,7 +724,7 @@
   /**
    * Returns the maximum time (in milliseconds) for which edits can be buffered.
    * <p>
-   * The default value is an unspecified and implementation dependant, but is
+   * The default value is an unspecified and implementation dependent, but is
    * guaranteed to be non-zero.
    * <p>
    * A return value of 0 indicates that edits are sent directly to HBase without
diff --git a/asynchbase/src/KeyRegexpFilter.java b/asynchbase/src/KeyRegexpFilter.java
index 33ed623..f7067c9 100644
--- a/asynchbase/src/KeyRegexpFilter.java
+++ b/asynchbase/src/KeyRegexpFilter.java
@@ -42,7 +42,7 @@
  * key.  Rows for which the key doesn't match will not be returned to the
  * scanner, which can be useful to carefully select which rows are matched
  * when you can't just do a prefix match, and cut down the amount of data
- * transfered on the network.
+ * transferred on the network.
  * <p>
  * Don't use an expensive regular expression, because Java's implementation
  * uses backtracking and matching will happen on the server side, potentially
diff --git a/s2core/src/main/scala/com/daumkakao/s2graph/core/Edge.scala b/s2core/src/main/scala/com/daumkakao/s2graph/core/Edge.scala
index 60880ca..dd73fd0 100644
--- a/s2core/src/main/scala/com/daumkakao/s2graph/core/Edge.scala
+++ b/s2core/src/main/scala/com/daumkakao/s2graph/core/Edge.scala
@@ -709,7 +709,7 @@
     }).toMap
     //    play.api.Logger.debug(s"$rowKey, $tgtVertexId, $props, $op, $ts => ${param.hasFilters}")
     /**
-     * TODO: backward compatability only. deprecate has field
+     * TODO: backward compatibility only. deprecate has field
      */
     val edge = Edge(Vertex(srcVertexId, ts), Vertex(tgtVertexId, ts), rowKey.labelWithDir, op, ts, version, props)
     //    if (param.propsFilters.filter(edge)) Some(edge) else None
@@ -768,7 +768,7 @@
     }).toMap
     //    play.api.Logger.debug(s"$rowKey, $tgtVertexId, $props, $op, $ts => ${param.hasFilters}")
     /**
-     * TODO: backward compatability only. deprecate has field
+     * TODO: backward compatibility only. deprecate has field
      */
     Edge(Vertex(srcVertexId, ts), Vertex(tgtVertexId, ts), rowKey.labelWithDir, op, ts, version, props)
   }
diff --git a/s2core/src/main/scala/com/daumkakao/s2graph/core/Graph.scala b/s2core/src/main/scala/com/daumkakao/s2graph/core/Graph.scala
index 326e080..b528834 100644
--- a/s2core/src/main/scala/com/daumkakao/s2graph/core/Graph.scala
+++ b/s2core/src/main/scala/com/daumkakao/s2graph/core/Graph.scala
@@ -702,7 +702,7 @@
     }
   }
   /**
-   * O(E), maynot feasable
+   * O(E), maynot feasible
    */
   def deleteVertexAll(vertices: Seq[Vertex]): Unit = {
     for {
@@ -838,4 +838,4 @@
     }
   }
 
-}
\ No newline at end of file
+}
diff --git a/s2core/src/main/scala/com/daumkakao/s2graph/core/HBaseElement.scala b/s2core/src/main/scala/com/daumkakao/s2graph/core/HBaseElement.scala
index 3a26369..fb37cc3 100644
--- a/s2core/src/main/scala/com/daumkakao/s2graph/core/HBaseElement.scala
+++ b/s2core/src/main/scala/com/daumkakao/s2graph/core/HBaseElement.scala
@@ -172,7 +172,7 @@
     }
 
     def withLong(l: Long): InnerVal = {
-      //      if (l < 0) throw new IllegalDataRangeException("value shoudl be >= 0")
+      //      if (l < 0) throw new IllegalDataRangeException("value should be >= 0")
       InnerVal(Some(l), None, None)
     }
     def withStr(s: String): InnerVal = {
@@ -488,4 +488,4 @@
     lazy val bytes = Bytes.add(Array.fill(1)(op), propsToKeyValuesWithTs(props))
   }
 
-}
\ No newline at end of file
+}
