allocation helpers and move it types to protected
insert at back
return by ref