updates to view system, now handles onChange