do not override .dispose()