move exception to service?