coupled protocol with main class