button type must always be specified