Add a convenience cache struct
Introduce Component trait and unsafe downcasting