separate providers and improve testing