add input, output, and val library