implement close