refractor + update service