There are 2 possible ways of how it should be architectured: 1. Pass-based with some heuristics to find which layouting algorithm to use. 2. General layouting algorithm which will use some kind of a metric to determine which chunk place after which.