add base classes and tools