input/output generation