add sift funtion