added requirement checks