Add completion callback