Switch to events instead of kv