quick cleanup on abstract, but this need more work