Generalise player object to pub/sub tasks