Packed all functions in a closure (makes them environment independent)
Directly export prototypes as module.exports