add assembly optimization