add weak.hpp