Initial commit of model and types