Please dont open this, its long!