I started my verification career using Specman. As such, I have a pretty good understanding of how to design a verification environment using e and Aspect Oriented Programming (AOP) techniques. Over the last couple of years I've been building my expertise in strictly OOP based environments such as C++, SystemC, and Vera. It's been a bit of a struggle, as AOP makes rapid prototyping of a test environment a piece of cake (relatively speaking). The reason is that AOP allows the creation of cross-cutting concerns that can be applied after the fact to allow the user to modify very specific portions of a data structure.