input and output specifications