Many changes + small additions