Initial commit, some API roughed out