changed model.py to use abcmeta and abstractclass