only calculate length once (and use it to normalize manually)
resolve conflict