add more strict checking, plus tests