diff --git a/microgears/microgears-tests.ts b/microgears/microgears-tests.ts
new file mode 100644
index 000000000..124058de7
--- /dev/null
+++ b/microgears/microgears-tests.ts
@@ -0,0 +1,58 @@
+///
+
+
+function verify_module_file() {
+ var tracePlugin = new TracePlugin();
+ microgears.addPlugin(tracePlugin);
+ var service = new UserService();
+ var userService = microgears.addService(service);
+
+
+}
+
+class TracePlugin implements microgears.Plugin {
+ name: 'TracePlugin';
+ public beforeChain(args:Array, _meta: microgears.MetaInformation) {
+ var serviceName = _meta.serviceName,
+ method = _meta.methodName;
+ console.log('before call-> ' + serviceName + '.' + method);
+
+ _meta.extra = {
+ count: 1
+ };
+
+ return args
+ }
+ public afterChain(result:any, _meta: microgears.MetaInformation) {
+ var serviceName = _meta.serviceName,
+ method = _meta.methodName;
+
+ console.log('after of-> ' + serviceName + '.' + method);
+ if (_meta.extra.count) {
+ console.log('this number comes to the beforeChain: ' + _meta.extra.count);
+ }
+
+ return result;
+ }
+}
+
+class User {
+ name: string;
+ email: string;
+
+ constructor(name: string, email: string) {
+ this.email = email;
+ this.name = name;
+ }
+}
+
+class UserService implements microgears.Service {
+ name: string = "userService";
+ namespace: string = "services.user";
+
+ public findUserById(id: number) {
+ return new User('test', 'test@example.com');
+ }
+
+}
+
diff --git a/microgears/microgears.d.ts b/microgears/microgears.d.ts
new file mode 100644
index 000000000..47e19b4e3
--- /dev/null
+++ b/microgears/microgears.d.ts
@@ -0,0 +1,33 @@
+// Type definitions for microgears v4.0.0
+// Project: http://github.com/marcusdb/microgears
+// Definitions by: Marcus David Bronstein
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+declare namespace microgears {
+ export interface Service {
+ name: string;
+ async?: boolean;
+ pathname?: string;
+ namespace: string;
+ }
+
+ interface MetaInformation {
+ serviceName: string;
+ methodName: string;
+ serviceNameSpace: string;
+ extra: any;
+ }
+
+ interface Plugin {
+ name: string;
+ beforeChain(arguments: Array, metaInfo: MetaInformation): Array;
+ afterChain(result: T, metaInfo: MetaInformation): T;
+ }
+
+ function addService(service: Service): Service;
+ function addPlugin(plugin: Plugin): void;
+}
+
+declare module "microgears" {
+ export = microgears;
+}
\ No newline at end of file