implement offline detection interface