start think about update functions