implement Component class