adding Type infrastructure