add abstract model generate