Using interfaces instead of concrete classes