use default implementation convention