refactored related m2m tests
fixed an issue in virtual fields recursion