abstract spinner