add input validity checking