optimize prepare