In Function(func), use fnew.assign(f) to create a deep copy of the underlying data