simpler version of component.go