add ready callback