cleanup API & abstract