added parameter checks