implemented several checks