base player functionality