refact, use camera to do transform works
add history codes