partitioning and clustering