Cleaned from third branch.