always validate input/output