add exception and validation