Latest changes. Not finished.