support multiple inheritance