updated timeout to use heartbeat instead of LastActivity