remove redundant case
add more datatypes and operations, add scalac warning options