demo now uses timeout