added clean!, update! to protocols