main revised