add input gathering code