top module logic