Details in comments.