termcolor is now optional