Credit Andrew - BSD fixes + a little more