implemented splice