Fleshed out Component class