added support for boost::variant