updated algo