abstracted status handling into its own service