simplify save function, update remove to use new callback system