current article is kind of working, needs tidying up and refactoring loads though