use Principal interface instead of conrete User class to avoid issues with other 'User' classes overwritten in projects