Added a lot of error catching mechanisms mainly because of the i2c busy
problems + renew the error handling by making functions return if they
failed