Changes to Singulo, ported over the OOP Singulo changes from /tg/.

This isn't finished yet.
pls no