Added ComponentInterface and necessary component classes