enumerated different roles + added some checks