fixed naming collisions between components and sub-elements