all: introduce Component.Type(). modify signature of FactoryFunc