added isReady()