cleanup - should not force specific implementation too much