use 4 level decomposition