uniform support
minor polish and move semantics