use C99 designated initializer