added classes, implementation, and instance type