extend() anti-pattern base vs subclass reuse tests