check for interface instead of concrete type