add clustering function