rewrote to comply fully with RFC2119