use reflection to get all implemented component types programatically
use reflection to get all implemented component types programatically