Initial commit, will work but needs a lot of tuning and optimalisation