support the none attribute; replace exceptions with asserts