Add install

@andredublin 

The last commit is completely yours. I made some changes that would require fixing conflicts on your branch, instead I just copied them over. Works well.

I am concerned about testing these methods, but I can say with certainty the install method works. Just need to write tests for it.

If you are ok with these please merge!