major improvements to optional argument handling
fix precedence and remove INC, DEC
improve default