initial commit
feature: provide before and after block for the middleware
fix: don't interrupt the execution flow in middleware