support multiple attribute types