Initial checkin. Needs thorough testing, docs, and Customers API.