constructors, splices and inserts, but I'm not sure about move semantics =(