before optimization