cleaned up the buy() method, added error checking
updated portfolio service reference with fault contracts