Implemented the Component and System providers

-May have to change the public interface, though
Formatting changes