First semi-functional version.