initial code with base classes and property classes