Final version, lazy version.