first pass on composable CPs