diff --git a/giraph-block-app-8/src/main/java/org/apache/giraph/block_app/library/pagerank/PageRankBlockUtils.java b/giraph-block-app-8/src/main/java/org/apache/giraph/block_app/library/pagerank/PageRankBlockUtils.java
index a14870b..b64ff78 100644
--- a/giraph-block-app-8/src/main/java/org/apache/giraph/block_app/library/pagerank/PageRankBlockUtils.java
+++ b/giraph-block-app-8/src/main/java/org/apache/giraph/block_app/library/pagerank/PageRankBlockUtils.java
@@ -44,7 +44,7 @@
       SupplierFromVertex<I, V, DoubleWritable, DoubleWritable> valueGetter,
       GiraphConfiguration conf) {
     return new SequenceBlock(
-        new PageRankInitializeAndNormalizeEdgesPiece<>(valueSetter, conf),
+        new PageRankInitializeAndNormalizeEdgesPiece<>(),
         pagerank(valueSetter, valueGetter,
             (vertex, edgeValue) -> edgeValue.get(), conf));
   }
diff --git a/giraph-block-app-8/src/main/java/org/apache/giraph/block_app/library/pagerank/PageRankInitializeAndNormalizeEdgesPiece.java b/giraph-block-app-8/src/main/java/org/apache/giraph/block_app/library/pagerank/PageRankInitializeAndNormalizeEdgesPiece.java
index 715deb1..6e9ad44 100644
--- a/giraph-block-app-8/src/main/java/org/apache/giraph/block_app/library/pagerank/PageRankInitializeAndNormalizeEdgesPiece.java
+++ b/giraph-block-app-8/src/main/java/org/apache/giraph/block_app/library/pagerank/PageRankInitializeAndNormalizeEdgesPiece.java
@@ -24,11 +24,9 @@
 import org.apache.giraph.block_app.framework.piece.interfaces.VertexReceiver;
 import org.apache.giraph.block_app.framework.piece.interfaces.VertexSender;
 import org.apache.giraph.combiner.NullMessageCombiner;
-import org.apache.giraph.conf.GiraphConfiguration;
 import org.apache.giraph.conf.ImmutableClassesGiraphConfiguration;
 import org.apache.giraph.edge.Edge;
 import org.apache.giraph.edge.MutableEdge;
-import org.apache.giraph.function.vertex.ConsumerWithVertex;
 import org.apache.hadoop.io.DoubleWritable;
 import org.apache.hadoop.io.NullWritable;
 import org.apache.hadoop.io.Writable;
@@ -44,22 +42,8 @@
     I extends WritableComparable, V extends Writable>
     extends Piece<I, V, DoubleWritable, NullWritable, Object> {
   /** Consumer which sets pagerank value in vertex */
-  private final ConsumerWithVertex<I, V, DoubleWritable, DoubleWritable>
-      valueSetter;
-  /** Default initial value pagerank value */
-  private final DoubleWritable initialValue;
 
-  /**
-   * Constructor
-   *
-   * @param valueSetter Consumer which sets pagerank value in vertex
-   * @param conf        Configuration
-   */
-  public PageRankInitializeAndNormalizeEdgesPiece(
-      ConsumerWithVertex<I, V, DoubleWritable, DoubleWritable> valueSetter,
-      GiraphConfiguration conf) {
-    this.valueSetter = valueSetter;
-    initialValue = new DoubleWritable(PageRankSettings.getInitialValue(conf));
+  public PageRankInitializeAndNormalizeEdgesPiece() {
   }
 
   @Override
@@ -87,8 +71,7 @@
   public VertexReceiver<I, V, DoubleWritable, NullWritable> getVertexReceiver(
       BlockWorkerReceiveApi<I> workerApi, Object executionStage) {
     return (vertex, messages) -> {
-      // Set initial pagerank value on all vertices
-      valueSetter.apply(vertex, initialValue);
+      // Do nothing
     };
   }
 
diff --git a/giraph-block-app-8/src/test/java/org/apache/giraph/block_app/library/pagerank/PageRankTest.java b/giraph-block-app-8/src/test/java/org/apache/giraph/block_app/library/pagerank/PageRankTest.java
index 7b19d93..7d92e9c 100644
--- a/giraph-block-app-8/src/test/java/org/apache/giraph/block_app/library/pagerank/PageRankTest.java
+++ b/giraph-block-app-8/src/test/java/org/apache/giraph/block_app/library/pagerank/PageRankTest.java
@@ -202,7 +202,7 @@
       TestGraph<LongWritable, DoubleWritable, DoubleWritable> graph) {
     Vertex<LongWritable, DoubleWritable, DoubleWritable> v = graph.getConf().createVertex();
     v.setConf(graph.getConf());
-    v.initialize(new LongWritable(id), new DoubleWritable(), newEdges(edges, weights));
+    v.initialize(new LongWritable(id), new DoubleWritable(1), newEdges(edges, weights));
     graph.addVertex(v);
   }
 
