Changed to be interface driven