fleshing out model and vm