modified v3.0.5