Forked from TehGimp's project. Looking to make some improvements and add modularity.