Final version, you might want to do insurance testing but its commented (in Geffy style)