add more type-p procedure
add more primitive procedure