add initializer list constructor and interator support