add complex
add exception usage