progress on swap*idemp