Generic components

also throw an error in the default case?