why do you need to override this function?