Figured out client event based structure, and created abstract Event types.