add suffix and TODO has bugs