add arguement checks