refactor services and make controllers as thin as possible