More work on component API.