Compatible with callcode/return swap