Implemented currying!
Refactored