can run graph generation on surfaces, need to explicitly dispose intermediate geometry introduced by LINQ statements, which is not clean, so it's better to avoid LINQ or look here:

http://solutionizing.net/2009/07/23/using-idisposables-with-linq/