added std::initializer_list support