Most of the functionality is implemented via Plugin interface which makes writing a custom plugin super easy.
Plugin