Restructure API, allow for versioning