func controller