-- implement background service