split the sift3 into three different methods