avoid code replication: use method pointers tasks requiring admin login