exceptions and documentation