extract generic unaryOp and binaryOp
update README