nice reading, but some problems in reproduce