push category: algorithm