split reference insertion into two "single" operations for backwards/forwards