smart pinter type check