Return -255 on error
try multiple times if error
revved version