writing version2, half finish