diff --git a/src/api.ts b/src/api.ts
index af41072..b19f3a5 100644
--- a/src/api.ts
+++ b/src/api.ts
@@ -10,6 +10,8 @@ import axios, { AxiosInstance } from "axios";
 import jwt from "jsonwebtoken";
 import { TokenPayload } from "./token";
 import { TRIBUFU_API_URL, TRIBUFU_VERSION } from ".";
+import camelcaseKeys from "camelcase-keys";
+import snakecaseKeys from "snakecase-keys";
 
 /**
  * **Tribufu API**
@@ -22,8 +24,8 @@ import { TRIBUFU_API_URL, TRIBUFU_VERSION } from ".";
  * - A client give you read and write access to the Tribufu API as a client application.
  */
 export class TribufuApi {
-    protected readonly http: AxiosInstance;
     protected readonly options: TribufuApiOptions;
+    protected readonly http: AxiosInstance;
 
     constructor(options?: TribufuApiOptions | null) {
         this.options = options || {};
@@ -33,12 +35,26 @@ export class TribufuApi {
             headers: TribufuApi.defaultHeaders(),
         });
 
-        if (TribufuApi.debugEnabled()) {
-            http.interceptors.request.use((req) => {
+        http.interceptors.request.use((req) => {
+            if (TribufuApi.debugEnabled()) {
                 console.log(`(TribufuApi) ${req.method?.toUpperCase()} ${req.baseURL}${req.url}`);
-                return req;
-            });
-        }
+            }
+
+            const contentType = req.headers["Content-Type"];
+            if (req.data && (contentType === "application/json" || contentType === "application/x-www-form-urlencoded")) {
+                req.data = snakecaseKeys(req.data);
+            }
+
+            return req;
+        });
+
+        http.interceptors.response.use((res) => {
+            if (res.data) {
+                res.data = camelcaseKeys(res.data);
+            }
+
+            return res;
+        });
 
         this.http = http;
     }
@@ -48,7 +64,7 @@ export class TribufuApi {
      * @returns
      */
     public static default(): TribufuApi {
-        return new TribufuApi({});
+        return new TribufuApi();
     }
 
     /**
@@ -63,40 +79,6 @@ export class TribufuApi {
         return new TribufuApi({ apiKey });
     }
 
-    /**
-     * Create a TribufuBot with the given bot token.
-     *
-     * - A bot give you read and write access to the Tribufu API as a bot account.
-     *
-     * @param token
-     * @returns TribufuBot
-     */
-    public static withBot(token: string): TribufuBot {
-        return new TribufuBot(token);
-    }
-
-    /**
-     * Create a TribufuClient with the given client id and client secret.
-     *
-     * @param clientId
-     * @param clientSecret
-     * @returns TribufuClient
-     */
-    public static withClient(clientId: string, clientSecret: string): TribufuClient {
-        return new TribufuClient(clientId, clientSecret);
-    }
-
-    /**
-     * Create a TribufuServer with the given server id, client id and client secret.
-     * @param serverId
-     * @param clientId
-     * @param clientSecret
-     * @returns TribufuServer
-     */
-    public static withServer(serverId: string, clientId: string, clientSecret: string): TribufuServer {
-        return new TribufuServer(serverId, clientId, clientSecret);
-    }
-
     /**
      * Try to create a TribufuApi from environment variables.
      *
@@ -107,11 +89,12 @@ export class TribufuApi {
      * @example
      * ```ts
      * // process.env.TRIBUFU_API_KEY
-     * const api = TribufuApi.fromEnv("TRIBUFU_");
+     * const api = TribufuApi.fromEnv("TRIBUFU");
      * ```
      */
-    public static fromEnv(prefix: string = ""): TribufuApi | null {
-        const apiKey = process.env[`${prefix}API_KEY`];
+    public static fromEnv(prefix?: string | null): TribufuApi | null {
+        const envPrefix = prefix ? `${prefix}_` : "";
+        const apiKey = process.env[`${envPrefix}API_KEY`];
 
         if (apiKey) {
             return TribufuApi.withApiKey(apiKey);
diff --git a/src/bot.ts b/src/bot.ts
index 96e025b..9ebb463 100644
--- a/src/bot.ts
+++ b/src/bot.ts
@@ -43,14 +43,15 @@ export class TribufuBot extends TribufuApi {
      * @example
      * ```ts
      * // process.env.TRIBUFU_BOT_TOKEN
-     * const bot = TribufuBot.fromEnv("TRIBUFU_");
+     * const bot = TribufuBot.fromEnv("TRIBUFU");
      * ```
      */
-    public static override fromEnv(prefix: string = ""): TribufuBot | null {
-        const token = process.env[`${prefix}BOT_TOKEN`];
+    public static override fromEnv(prefix?: string | null): TribufuBot | null {
+        const envPrefix = prefix ? `${prefix}_` : "";
+        const token = process.env[`${envPrefix}BOT_TOKEN`];
 
         if (token) {
-            return TribufuApi.withBot(token);
+            return new TribufuBot(token);
         }
 
         return null;
diff --git a/src/client.ts b/src/client.ts
index f5f83b5..4ba80a5 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -19,7 +19,7 @@ export class TribufuClient extends TribufuApi {
     private readonly clientSecret: string;
 
     constructor(clientId: string, clientSecret: string) {
-        super({});
+        super();
 
         this.clientId = clientId;
         this.clientSecret = clientSecret;
@@ -36,15 +36,16 @@ export class TribufuClient extends TribufuApi {
      * ```ts
      * // process.env.TRIBUFU_CLIENT_ID
      * // process.env.TRIBUFU_CLIENT_SECRET
-     * const client = TribufuClient.fromEnv("TRIBUFU_");
+     * const client = TribufuClient.fromEnv("TRIBUFU");
      * ```
      */
-    public static override fromEnv(prefix: string = ""): TribufuClient | null {
-        const clientId = process.env[`${prefix}CLIENT_ID`];
-        const clientSecret = process.env[`${prefix}CLIENT_SECRET`];
+    public static override fromEnv(prefix?: string | null): TribufuClient | null {
+        const envPrefix = prefix ? `${prefix}_` : "";
+        const clientId = process.env[`${envPrefix}CLIENT_ID`];
+        const clientSecret = process.env[`${envPrefix}CLIENT_SECRET`];
 
         if (clientId && clientSecret) {
-            return TribufuApi.withClient(clientId, clientSecret);
+            return new TribufuClient(clientId, clientSecret);
         }
 
         return null;
diff --git a/src/constants.js b/src/constants.js
index 36fafdd..1f9424d 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -1,4 +1,4 @@
-a// Copyright (c) Tribufu. All Rights Reserved.
+// Copyright (c) Tribufu. All Rights Reserved.
 
 import packageJson from "../package.json";
 
diff --git a/src/server.ts b/src/server.ts
index efadf75..b936b49 100644
--- a/src/server.ts
+++ b/src/server.ts
@@ -32,16 +32,17 @@ export class TribufuServer extends TribufuClient {
      * // process.env.TRIBUFU_SERVER_ID
      * // process.env.TRIBUFU_CLIENT_ID
      * // process.env.TRIBUFU_CLIENT_SECRET
-     * const server = TribufuServer.fromEnv("TRIBUFU_");
+     * const server = TribufuServer.fromEnv("TRIBUFU");
      * ```
      */
-    public static override fromEnv(prefix: string = ""): TribufuServer | null {
-        const serverId = process.env[`${prefix}SERVER_ID`];
-        const clientId = process.env[`${prefix}CLIENT_ID`];
-        const clientSecret = process.env[`${prefix}CLIENT_SECRET`];
+    public static override fromEnv(prefix?: string | null): TribufuServer | null {
+        const envPrefix = prefix ? `${prefix}_` : "";
+        const serverId = process.env[`${envPrefix}SERVER_ID`];
+        const clientId = process.env[`${envPrefix}CLIENT_ID`];
+        const clientSecret = process.env[`${envPrefix}CLIENT_SECRET`];
 
         if (serverId && clientId && clientSecret) {
-            return TribufuApi.withServer(serverId, clientId, clientSecret);
+            return new TribufuServer(serverId, clientId, clientSecret);
         }
 
         return null;