updated workshop function