moving sync events mostly to models