add proper input checking