implment widget API.