finished v1.0