TODO: checkError