you should not rely on `finalize`