your concepts are wrong, saying that type CircleShape = concept a a.r buildCircleProps(a) Run
means that for anything to match CircleShape, it must already have a buildCircleProps defined for it. if you do not want that, you remove the buildnnnn() lines and then it will compile properly without the boilerplate.