Added the HiddenBlock and BlockManager class for managing hidden blocks; completely rewrote all listeners from scratch