removed region_divide_alignment and region_equal_alignment, as they are without purpose
granulated_length -> split_length, pass by reference -> pointer, do checks on basic and optimized granularity in constructor