better partitioning