Made the entire lib serializable and changed some QoL issues with Event propagation