constructor with 1 interface and 3 classes