updated abstract transformer