utilize the onPrepare function