better handling of callee save