reference interfaces in favor of impl classes