improved type validation