better (DRY) handling of optional post & translate