add prepare function