First major commit, library is still in development.