Much chopping and changing, so almost completley working
Only issue is the RealiseCursor function is slightly corrupting the
image