maybe destroyAll should accept null and we can dispense with the !=null check everywhere?