def METHOD_NAME(in_shape,
                             out_shape,
                             n_block=4,
                             groups=1,
                             use_bn=False):
    out_shapes = [out_shape for _ in range(n_block)]
    multi_scaler = nn.Module()
    for idx in range(n_block - 1, -1, -1):
        """
          1 x 1 conv for dim reduction -> group norm
        """
        layer_name = f'layer_{(idx)}_rn'
        multi_scaler.add_module(
            layer_name,
            nn.Conv2d(in_shape[idx], out_shapes[idx], kernel_size=1))
        layer_name = f'p_norm_{(idx)}'
        multi_scaler.add_module(layer_name, nn.GroupNorm(32, out_shapes[idx]))
        layer_name = f'refinenet_{idx}'
        multi_scaler.add_module(layer_name,
                                _make_fusion_block(out_shape, use_bn))
        # initialize for the 1x1 conv
        nn.init.xavier_uniform_(
            getattr(multi_scaler, f'layer_{idx}_rn').weight, gain=1)
        nn.init.constant_(getattr(multi_scaler, f'layer_{idx}_rn').bias, 0)
    return multi_scaler