supporting multiple definitions