adapter & singleton