add abstract Model class