
Latest salvos in public service delivery debate - 28/06/05 A new book by Association of Chief Executives of Voluntary Organisations ( acevo ) and the Social Market Foundation ( SMF ) calls for substantial increase in vol sector delivery of public services . But their views have not been universally welcomed . The publication ' Communities in Control : the new third-sector agenda for public service reform ' says that the government will fail to meet its manifesto commitments on public service reform unless it makes better use of the third sector . It says in terms of delivery of public services Children 's services , health services , services to prisoners , even running a prison should n't be ruled out . Acevo head of strategy Nick Aldridge ( pictured ) said : " We want to see the state transferring substantial sums of money to third sector organisations to enable them to take over the delivery of public services as happened with housing associations in the 1980s . ' The advantages of using the voluntary sector are that they ' personalise their services in a way that government finds very difficult through monolithic , unresponsive , one-size-fits-all public services . ' SMF acting director Ann Rossiter said : " It will have the benefit of building social capital and building a robust civil society " . Acevo are clear that the voluntary sector should n't just turn into a mirror image of the public sector and there would be no point transfering services if services do n't improve . NCVO however are wary . While they believe the sector can and does play a significant role in shaping and delivering public services , they say charities must engage in public service delivery only if it helps further their mission . The sector has various role such as advocacy , campaigning , advisory services , information and acting as social glue ' . The public perception of the sector may be warped by an over emphasise on public service delivery . Ben Kernighan , Services and Development Director at NCVO said : " It is important to remember that voluntary organisations have a really important role in bringing communities together . " While the publication holds Housing Associations as the model to follow , NCVO warn that the stock transfer of council housing has been met with a mixed response and that supply is currently not meeting demand . However Clare Tickell of National Children 's Hospital ( NCH ) was full of enthusiasm for public service delivery . NCH provide early education and day care , family support and outreach to parents , and child and family health services . She said : " We want to play an even bigger role in service provision in the future to ensure people receive better public services . " 