Components are now generic