every component should define public APIs