diff --git a/PyNutil/coordinate_extraction.py b/PyNutil/coordinate_extraction.py
index c3cb1f3a671d88d913c6cafaabed04c5cd58fa2b..fecb68fc7741bbb3c2aed35fada36b1396c50dcc 100644
--- a/PyNutil/coordinate_extraction.py
+++ b/PyNutil/coordinate_extraction.py
@@ -1,5 +1,6 @@
 
 import numpy as np
+import pandas as pd
 from DeepSlice.coord_post_processing.spacing_and_indexing import number_sections
 import json
 from read_and_write import loadVisuAlignJson
@@ -270,3 +271,40 @@ def labelPoints(points, label_volume, scale_factor=1):
     labels = label_volume[x,y,z]
     return labels
 
+# related to object_counting
+# consider separating out writing to CSV in future
+def PixelCountPerRegion(labelsDict, label_colours, output_csv): 
+    """Function for counting no. of pixels per region and writing to CSV based on 
+    a dictionary with the region as the key and the points as the value, """
+    counted_labels, label_counts = np.unique(labelsDict, return_counts=True)
+    # which regions have pixels, and how many pixels are there per region
+    counts_per_label = list(zip(counted_labels,label_counts))
+    # create a list of unique regions and pixel counts per region
+
+    df_counts_per_label = pd.DataFrame(counts_per_label, columns=["allenID","pixel count"])
+    # create a pandas df with regions and pixel counts
+
+    df_label_colours =pd.read_csv(label_colours, sep=",")
+    # find colours corresponding to each region ID and add to the pandas dataframe
+
+    #look up name, r, g, b in df_allen_colours in df_counts_per_label based on "allenID"
+    new_rows = []
+    for index, row in df_counts_per_label.iterrows():
+        mask = df_label_colours["allenID"] == row["allenID"] 
+        current_region_row = df_label_colours[mask]
+        current_region_name = current_region_row["name"].values
+        current_region_red = current_region_row["r"].values
+        current_region_green = current_region_row["g"].values
+        current_region_blue = current_region_row["b"].values
+
+        row["name"]  = current_region_name[0]
+        row["r"] = current_region_red[0]
+        row["g"] = current_region_green[0]
+        row["b"] = current_region_blue[0]
+        
+        new_rows.append(row)
+
+    df_counts_per_label_name = pd.DataFrame(new_rows)
+    
+    df_counts_per_label_name.to_csv(output_csv, sep=";", na_rep='', index= False)
+
diff --git a/PyNutil/folder_of_segmentations_to_meshview_multithreaded.py b/PyNutil/folder_of_segmentations_to_meshview_multithreaded.py
index b76981ad9e07da339757f8e2402283122727da95..001cc7d82ae40d03f56421749906fa46c2c9b135 100644
--- a/PyNutil/folder_of_segmentations_to_meshview_multithreaded.py
+++ b/PyNutil/folder_of_segmentations_to_meshview_multithreaded.py
@@ -10,12 +10,12 @@ import json
 from datetime import datetime
 
 #import json into "input" variable, use to define input parameters
-with open('../test/test1.json', 'r') as f:
+with open('../test/test2.json', 'r') as f:
   input = json.load(f)
 #print(input)
 
 #import our function for converting a folder of segmentations to points
-from coordinate_extraction import FolderToAtlasSpace, labelPoints, WritePointsToMeshview, FolderToAtlasSpaceMultiThreaded
+from coordinate_extraction import FolderToAtlasSpace, labelPoints, WritePointsToMeshview, FolderToAtlasSpaceMultiThreaded, PixelCountPerRegion
 #from read_and_write import WritePointsToMeshview
 
 startTime = datetime.now()
@@ -37,58 +37,13 @@ labels = labelPoints(points, data, scale_factor=2.5)
 #save points to a meshview json
 WritePointsToMeshview(points, labels, input["points_json_path"], label_df)
 
-#SY Task:
-# function for counting no. of objects per region
-# Make a pandas dataframe
-# Column 1: counted_labels
-# Column 2: label_counts
-# Column 3: region_name (look up by reading Allen2022_colours.csv, look up name and RGB)
-# Save dataframe in output as CSV
-# next task is to create functions from this. 
-
-
-counted_labels, label_counts = np.unique(labels, return_counts=True)
-counts_per_label = list(zip(counted_labels,label_counts))
-
-df_counts_per_label = pd.DataFrame(counts_per_label, columns=["allenID","pixel count"])
-
-
-df_allen_colours =pd.read_csv(input["allen_colours"], sep=",")
-df_allen_colours
-
-#look up name, r, g, b in df_allen_colours in df_counts_per_label based on "allenID"
-new_rows = []
-for index, row in df_counts_per_label.iterrows():
-    mask = df_allen_colours["allenID"] == row["allenID"] 
-    current_region_row = df_allen_colours[mask]
-    current_region_name = current_region_row["name"].values
-    current_region_red = current_region_row["r"].values
-    current_region_green = current_region_row["g"].values
-    current_region_blue = current_region_row["b"].values
-
-    row["name"]  = current_region_name[0]
-    row["r"] = current_region_red[0]
-    row["g"] = current_region_green[0]
-    row["b"] = current_region_blue[0]
-    
-    new_rows.append(row)
-
-df_counts_per_label_name = pd.DataFrame(new_rows)
-df_counts_per_label_name
-
-# write to csv file
-df_counts_per_label_name.to_csv(input["counts_per_label_name"], sep=";", na_rep='', index= False)
-
-#r = df_allen_colours["r"]
-#g = df_allen_colours["g"]
-#b = df_allen_colours["b"]
-#region_name = df_allen_colours["name"]
+PixelCountPerRegion(labels, input["allen_colours"], input["counts_per_label_name"])
 
 #while we havent added it here it would be good to next quantify the number of cells for each label.
 
 time_taken = datetime.now() - startTime
 
-print(f"time taken was: {time_taken}")
+print(f"overall time taken was: {time_taken}")
 
 #get centroids and areas returns a list of objects and the center coordinate.