added control over conflicting names using callback