implementing domain classes