1. Add pattern match support
2. curry is an individual method now
3. eval tweak
4. unify all arguments naming
5. repo clean up