adding ARC-ready implementation