A strategy for the optimization of non-hierarchic systems by decomposition into smaller subproblems is presented. Each subproblem is defined by its own set of design variables and functions. The procedure solves each subproblem in sequence and includes a strategy to move away from points that are optimal for all the subproblems but not optimal for the global problem. The same objective function and constraints are present at all levels and the evaluation of non-local functions is made using convex approximations. Examples are provided for illustration.