update with functionality