putting components behind an interface