move insertion points to separate trait
do separate transformations for insertion of abstraction and replacement with call