Part I

Added AbstractModel class