change implementation to support multiple values