preserve is actually needed in some cases