added ServiceFactory
refactor dao and service