don't confuse interlibrary dependencies as a cycle
add tests