classes, interface and exception