starts to populate class
adds checks
adds more checks
changes model, playing with objects as keys
makes dictionary behave well
fix mutability issue