Factory now returns POINTERS to new Expressions - fixed the inheritance problem