Added base classes and demonstration