first clean up on abstract