register and unregister plugins and provide a better way to bind and unbind.