what else extends the abstract cost balancer? Or rather, why make it abstract?