while this API is a bit yucky, it's a step forward for protocol isolation and offers the possibility of controlling animations by adding events.