
4.3.1 A major priority for the New TSN Unit during the first year of the policy was to ensure that Departments and others had the guidance and advice they needed effectively to implement New TSN ; and that appropriate arrangements were in place to enable Departments effectively to work together . 4.3.2 The Unit worked with trainers from across Departments to explain the importance of New TSN training . It produced core training materials , for use by all Departments which explained New TSN principles and their implementation . It provided seminars to guide Departmental trainers and policy makers on the use of the material and on adopting these to suit individual needs . These were followed up with training ' clinics ' , small intensive group sessions to discuss issues arising from the delivery of training across Departments . 4.3.3 The Unit gained ' hands on ' experience of training by providing training sessions within OFMDFM . The Unit also provided additional advice and support to individual trainers from a number of Departments . The content of the core training materials have been kept under review , and , where necessary , amendments made in the light of their use . 4.3.4 An important aspect of the Unit 's work is to advise , and where necessary , challenge Departments on their implementation of New TSN . The Unit fulfills this role by developing and nurturing an understanding of each Department 's responsibilities and range of business . Undertaking bilateral meetings and assisting in the consideration of issues concerning the implementation of New TSN . 4.3.5 The New TSN Unit reviewed the cross-Departmental groups on New TSN Action Plans and Promoting Social Inclusion Priorities , which had been established under Direct Rule . It concluded that , in the Devolved context , a single New TSN Steering Group whose terms of reference amalgamated the responsibilities of both these groups would ensure greater cohesion in delivering all aspects of work on New TSN . The New TSN Steering Group was established in September 2000 . 4.3.6 OFMDFM also had a crucial role in ensuring that New TSN was fully taken into account in cross-Departmental reviews on initiatives led by other Departments . This role is exercised primarily through membership of cross-departmental Working Groups . However , the Department also contributed advice and information on an ad hoc basis , for example , the Taskforce on Employability and Long Term Unemployment established by the Minister for Employment and Learning in March 2001 and the review of public procurement initiated by the Minister for Finance and Personnel . 