Almost all working, just click event and tidying up to do