Throwing useful exceptions, assertions on invalid parameters.
Macros are simpler now.
Added the ability to reset the stack, changed some error handling.
Merge remote-tracking branch 'origin'