add per functions