branch with default implementation