a little improvement (but it can't resolve the circular referencing problem)