call boost::begin/end explicitly because of C++11 std::begin/end ambiguity