A bunch of changes. Has to be reviewed!