clean via abstraction...you are useless