add nanosleep; fix error handling a bit