diff --git a/src/main/java/net/onrc/onos/datagrid/web/GetNGEventsResource.java b/src/main/java/net/onrc/onos/datagrid/web/GetNGEventsResource.java
index 20efa68..bbf03cb 100644
--- a/src/main/java/net/onrc/onos/datagrid/web/GetNGEventsResource.java
+++ b/src/main/java/net/onrc/onos/datagrid/web/GetNGEventsResource.java
@@ -14,28 +14,28 @@
 
 public class GetNGEventsResource extends ServerResource {
 
-	public static final Logger log = LoggerFactory.getLogger(GetNGEventsResource.class);
-	
-	@Get("json")
-	public String retrieve() {
-		IDatagridService datagridService = 
-				(IDatagridService) getContext().getAttributes().
-				get(IDatagridService.class.getCanonicalName());
-		
-		
-		log.debug("Get network graph events");
-		
-		IEventChannel<byte[], TopologyEvent> channel = datagridService.createChannel(TopologyManager.EVENT_CHANNEL_NAME, 
-				byte[].class, TopologyEvent.class);
-		
-		Collection<TopologyEvent> entries = channel.getAllEntries();
-		
-		String result = "";
-		for (TopologyEvent event : entries) {
-			result += event.toString() + "\n";
-		}
-		
-		return result;
-	}
+    public static final Logger log = LoggerFactory.getLogger(GetNGEventsResource.class);
+
+    @Get("json")
+    public String retrieve() {
+        IDatagridService datagridService =
+                (IDatagridService) getContext().getAttributes().
+                        get(IDatagridService.class.getCanonicalName());
+
+
+        log.debug("Get network graph events");
+
+        IEventChannel<byte[], TopologyEvent> channel = datagridService.createChannel(TopologyManager.EVENT_CHANNEL_NAME,
+                byte[].class, TopologyEvent.class);
+
+        Collection<TopologyEvent> entries = channel.getAllEntries();
+
+        String result = "";
+        for (TopologyEvent event : entries) {
+            result += event.toString() + "\n";
+        }
+
+        return result;
+    }
 
 }
