compact new particle alloc into small inline func