move some postDecode logic to 'open()'

more reasonable validate etc costs