component discovery