refactor with service handle