Substantial re-programming to take account of misunderstandings about component lifecycle, and to complete tests