add procedure-arity? prim
add some struct's optimisation and clean up
add checked-procedure-check-and-extract with test