component API implimented.