#6 - improve profile model and add unit tests