add cursor functions
add type functions