add a wrapper for the components
Use memoize for now

TODO: transition this to a real cache system rather than simply
memoizing the database query.