[backend] use Build::parse_typed, refactor