Lot of changes, too lazy for complete description.