[updated] refactored to use service