support multiple implements