Modularize attribute types
Update abstract methods to show that they throw an error
Model will use storage for its internal tracking of individual models