1. add isComparable in type class
2. add range span range intersection operator and pass semantic