added more insfrastructure classes and interfaces