custom: added delete support & refactoring