* code for task#658.
 * code for task#658.
 * code for task#2172.