UserProvider implementation + UTs