Support loading assets outside of components, restructure client some more