make generation of partitions completely procedural, so arbitrary size partitions are supported