add struct's guard support (not finished)