created an abstract definition class