prepare() function