Modulize whole functionality

It's totally ready for use. :kissing_cat: