restructured to split the components into their own projects