New types + refacotring