add reduce, rename minus -> sub
add apply