bug checked
final