Adapter Component to use generics and reflection to ensure type safety