Added types and vm implementaion.