some cleanup
pass local destination by pointer