Automatic generate component, almost done