Switched from using an interface to an abstract class for the precompiler.