added non-ARC support