extend with onItem callback