refactor; add cyclic types failed test case