improved push type autodetection