improved the implementation, using Botsch '06 method.