Consolidate constructors. TODO - use a deque to avoid the range copy.