Bunch of refactoring, implementing pubsub for Rings

freaking druggo
Alpha - definitely won't work but there are no compile errors - I can go to bed