* add attributes as NamedAttribute * support list value for attribute * use std::tie to avoid c++17 feature