CSCI580_Fall_2014: Last version before merge.