full single player functionality