some modify for arc