change fail_unless! to assert
add abiset arg
parser refactor to separate foreign items
continued refactor