partial implementation on upadate method, todo test