added feature keep-alive