add update and collect functionality