updated algo again