establish classes and begin implementations