Loads of changes + improvements