better feature detection