implement compose.