My first attempt at developing a framework which allows plugins