some adjusts
final version
final version