precision set to 32bit
bugs corrected