use ko instead of setTimeout