this version is a good prototype.