implement splice