add currying support