http://mbed.org/teams/aigamozu/code/agz_common/#14e469b0c33e