Initial checkin

Initial checkin, still pretty rough around the edges.