diff --git a/Elastacloud.FluentExamples.Tests/App.config b/Elastacloud.FluentExamples.Tests/App.config
new file mode 100644
index 0000000..9fc988c
--- /dev/null
+++ b/Elastacloud.FluentExamples.Tests/App.config
@@ -0,0 +1,5 @@
+
+
+	
+	
+
\ No newline at end of file
diff --git a/Elastacloud.FluentExamples.Tests/Elastacloud.FluentExamples.Tests.csproj b/Elastacloud.FluentExamples.Tests/Elastacloud.FluentExamples.Tests.csproj
new file mode 100644
index 0000000..e016f66
--- /dev/null
+++ b/Elastacloud.FluentExamples.Tests/Elastacloud.FluentExamples.Tests.csproj
@@ -0,0 +1,128 @@
+
+
+  
+    Debug
+    AnyCPU
+    {039FF870-897E-4C78-809B-9322CC548621}
+    Library
+    Properties
+    Elastacloud.FluentExamples.Tests
+    Elastacloud.FluentExamples.Tests
+    v4.5
+    512
+    {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+    10.0
+    $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+    $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages
+    False
+    UnitTest
+    ..\
+    true
+  
+  
+    true
+    full
+    false
+    bin\Debug\
+    DEBUG;TRACE
+    prompt
+    4
+  
+  
+    pdbonly
+    true
+    bin\Release\
+    TRACE
+    prompt
+    4
+  
+  
+    
+      ..\packages\BouncyCastle.1.7.0\lib\Net40-Client\BouncyCastle.Crypto.dll
+    
+    
+      ..\packages\Elastacloud.AzureManagement.Fluent.0.4.4.8\lib\Elastacloud.AzureManagement.Fluent.dll
+    
+    
+      True
+      ..\packages\Elastacloud.AzureManagement.Fluent.0.4.4.8\lib\Microsoft.SqlServer.ConnectionInfo.dll
+    
+    
+      True
+      ..\packages\Elastacloud.AzureManagement.Fluent.0.4.4.8\lib\Microsoft.SqlServer.Management.Sdk.Sfc.dll
+    
+    
+      True
+      ..\packages\Elastacloud.AzureManagement.Fluent.0.4.4.8\lib\Microsoft.SqlServer.Smo.dll
+    
+    
+      ..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll
+    
+    
+      ..\packages\NLog.2.0.0.2000\lib\net40\NLog.dll
+    
+    
+    
+    
+  
+  
+    
+      
+        
+      
+    
+    
+      
+        
+      
+    
+  
+  
+    
+    
+  
+  
+    
+      Always
+    
+    
+    
+      Designer
+    
+    
+  
+  
+    
+      {2accfe36-b097-4658-90c0-79498bff6eea}
+      Elastacloud.FluentExamples
+    
+  
+  
+    
+      
+        
+          False
+        
+        
+          False
+        
+        
+          False
+        
+        
+          False
+        
+      
+    
+  
+  
+  
+  
+  
+
\ No newline at end of file
diff --git a/Elastacloud.FluentExamples.Tests/NLog.config b/Elastacloud.FluentExamples.Tests/NLog.config
new file mode 100644
index 0000000..d2e19fd
--- /dev/null
+++ b/Elastacloud.FluentExamples.Tests/NLog.config
@@ -0,0 +1,25 @@
+
+
+
+  
+  
+    
+    
+    
+  
+
+  
+    
+    
+    
+  
+
\ No newline at end of file
diff --git a/Elastacloud.FluentExamples.Tests/NLog.xsd b/Elastacloud.FluentExamples.Tests/NLog.xsd
new file mode 100644
index 0000000..2203f4e
--- /dev/null
+++ b/Elastacloud.FluentExamples.Tests/NLog.xsd
@@ -0,0 +1,2585 @@
+
+
+  
+  
+    
+      
+      
+      
+      
+      
+    
+    
+      
+        Watch config file for changes and reload automatically.
+      
+    
+    
+      
+        Print internal NLog messages to the console. Default value is: false
+      
+    
+    
+      
+        Print internal NLog messages to the console error output. Default value is: false
+      
+    
+    
+      
+        Write internal NLog messages to the specified file.
+      
+    
+    
+      
+        Log level threshold for internal log messages. Default value is: Info.
+      
+    
+    
+      
+        Global log level threshold for application log messages. Messages below this level won't be logged..
+      
+    
+    
+      
+        Pass NLog internal exceptions to the application. Default value is: false.
+      
+    
+  
+  
+    
+      
+      
+      
+      
+      
+    
+    
+      
+        Make all targets within this section asynchronous (creates additional threads but the calling thread isn't blocked by any target writes).
+      
+    
+  
+  
+    
+      
+    
+  
+  
+    
+      
+    
+  
+  
+    
+      
+        Prefix for targets/layout renderers/filters/conditions loaded from this assembly.
+      
+    
+    
+      
+        Load NLog extensions from the specified file (*.dll)
+      
+    
+    
+      
+        Load NLog extensions from the specified assembly. Assembly name should be fully qualified.
+      
+    
+  
+  
+    
+      
+    
+    
+      
+        Name of the logger. May include '*' character which acts like a wildcard. Allowed forms are: *, Name, *Name, Name* and *Name*
+      
+    
+    
+      
+        Comma separated list of levels that this rule matches.
+      
+    
+    
+      
+        Minimum level that this rule matches.
+      
+    
+    
+      
+        Maximum level that this rule matches.
+      
+    
+    
+      
+        Level that this rule matches.
+      
+    
+    
+      
+        Comma separated list of target names.
+      
+    
+    
+      
+        Ignore further rules if this one matches.
+      
+    
+  
+  
+    
+      
+      
+      
+      
+      
+    
+  
+  
+    
+      
+      
+      
+      
+      
+      
+      
+    
+  
+  
+    
+      
+    
+  
+  
+    
+      
+        Name of the file to be included. The name is relative to the name of the current config file.
+      
+    
+    
+      
+        Ignore any errors in the include file.
+      
+    
+  
+  
+    
+      
+        Variable name.
+      
+    
+    
+      
+        Variable value.
+      
+    
+  
+  
+    
+      
+    
+  
+  
+  
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+        
+      
+    
+  
+  
+  
+  
+    
+      
+    
+  
+  
+    
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Limit on the number of requests in the lazy writer thread request queue.
+          
+        
+        
+          
+            Time in milliseconds to sleep between batches.
+          
+        
+        
+          
+            Number of log events that should be processed in a batch by the lazy writer thread.
+          
+        
+        
+          
+            Action to be taken when the lazy writer thread request queue count exceeds the set limit.
+          
+        
+      
+    
+  
+  
+    
+      
+      
+      
+    
+  
+  
+    
+      
+        
+          
+        
+        
+          
+            Name of the target.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Indicates whether to use sliding timeout.
+          
+        
+        
+          
+            Number of log events to be buffered.
+          
+        
+        
+          
+            Timeout (in milliseconds) after which the contents of buffer will be flushed if there's no write in the specified period of time. Use -1 to disable timed flushes.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Indicates whether to append newline at the end of log message.
+          
+        
+        
+          
+            Instance of  that is used to format log messages.
+          
+        
+        
+          
+            Action that should be taken if the message is larger than maxMessageSize.
+          
+        
+        
+          
+            Maximum message size in bytes.
+          
+        
+        
+          
+            Encoding to be used.
+          
+        
+        
+          
+            Size of the connection cache (number of connections which are kept alive).
+          
+        
+        
+          
+            Network address.
+          
+        
+        
+          
+            Indicates whether to keep connection open whenever possible.
+          
+        
+        
+          
+            Indicates whether to include source info (file name and line number) in the information sent over the network.
+          
+        
+        
+          
+            Indicates whether to include call site (class and method name) in the information sent over the network.
+          
+        
+        
+          
+            AppInfo field. By default it's the friendly name of the current AppDomain.
+          
+        
+        
+          
+            NDC item separator.
+          
+        
+        
+          
+            Indicates whether to include  stack contents.
+          
+        
+        
+          
+            Indicates whether to include NLog-specific extensions to log4j schema.
+          
+        
+        
+          
+            Indicates whether to include  dictionary contents.
+          
+        
+      
+    
+  
+  
+    
+      
+      
+      
+    
+  
+  
+    
+      
+      
+    
+    
+      
+        Layout that should be use to calcuate the value for the parameter.
+      
+    
+    
+      
+        Viewer parameter name.
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Text to be rendered.
+          
+        
+        
+          
+            Footer.
+          
+        
+        
+          
+            Header.
+          
+        
+        
+          
+            Indicates whether to send the log messages to the standard error instead of the standard output.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Database user name. If the ConnectionString is not provided this value will be used to construct the "User ID=" part of the connection string.
+          
+        
+        
+          
+            Name of the database provider.
+          
+        
+        
+          
+            Indicates whether to use database transactions. Some data providers require this.
+          
+        
+        
+          
+            Name of the connection string (as specified in <connectionStrings> configuration section.
+          
+        
+        
+          
+            Connection string. When provided, it overrides the values specified in DBHost, DBUserName, DBPassword, DBDatabase.
+          
+        
+        
+          
+            Indicates whether to keep the database connection open between the log events.
+          
+        
+        
+          
+            Database name. If the ConnectionString is not provided this value will be used to construct the "Database=" part of the connection string.
+          
+        
+        
+          
+            Database password. If the ConnectionString is not provided this value will be used to construct the "Password=" part of the connection string.
+          
+        
+        
+          
+            Database host name. If the ConnectionString is not provided this value will be used to construct the "Server=" part of the connection string.
+          
+        
+        
+          
+            Connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used.
+          
+        
+        
+          
+            Text of the SQL command to be run on each log level.
+          
+        
+      
+    
+  
+  
+    
+      
+      
+      
+    
+  
+  
+    
+      
+      
+      
+      
+      
+    
+    
+      
+        Type of the command.
+      
+    
+    
+      
+        Connection string to run the command against. If not provided, connection string from the target is used.
+      
+    
+    
+      
+        Indicates whether to ignore failures.
+      
+    
+    
+      
+        Command text.
+      
+    
+  
+  
+    
+      
+      
+      
+      
+      
+    
+    
+      
+        Layout that should be use to calcuate the value for the parameter.
+      
+    
+    
+      
+        Database parameter name.
+      
+    
+    
+      
+        Database parameter precision.
+      
+    
+    
+      
+        Database parameter scale.
+      
+    
+    
+      
+        Database parameter size.
+      
+    
+  
+  
+    
+      
+        
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Layout used to format log messages.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Indicates whether to return to the first target after any successful write.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Text to be rendered.
+          
+        
+        
+          
+            Header.
+          
+        
+        
+          
+            Footer.
+          
+        
+        
+          
+            File encoding.
+          
+        
+        
+          
+            Line ending mode.
+          
+        
+        
+          
+            Size in bytes above which log files will be automatically archived.
+          
+        
+        
+          
+            Maximum number of archive files that should be kept.
+          
+        
+        
+          
+            Name of the file to be used for an archive.
+          
+        
+        
+          
+            Way file archives are numbered.
+          
+        
+        
+          
+            Indicates whether to automatically archive log files every time the specified time passes.
+          
+        
+        
+          
+            Indicates whether to replace file contents on each write instead of appending log message at the end.
+          
+        
+        
+          
+            File attributes (Windows only).
+          
+        
+        
+          
+            Name of the file to write to.
+          
+        
+        
+          
+            Indicates whether to delete old log file on startup.
+          
+        
+        
+          
+            Indicates whether to enable log file(s) to be deleted.
+          
+        
+        
+          
+            Indicates whether to create directories if they don't exist.
+          
+        
+        
+          
+            Indicates whether concurrent writes to the log file by multiple processes on the same host.
+          
+        
+        
+          
+            Maximum number of seconds that files are kept open. If this number is negative the files are not automatically closed after a period of inactivity.
+          
+        
+        
+          
+            Number of files to be kept open. Setting this to a higher value may improve performance in a situation where a single File target is writing to many files (such as splitting by level or by logger).
+          
+        
+        
+          
+            Indicates whether concurrent writes to the log file by multiple processes on different network hosts.
+          
+        
+        
+          
+            Delay in milliseconds to wait before attempting to write to the file again.
+          
+        
+        
+          
+            Number of times the write is appended on the file before NLog discards the log message.
+          
+        
+        
+          
+            Log file buffer size in bytes.
+          
+        
+        
+          
+            Indicates whether to automatically flush the file buffers after each log message.
+          
+        
+        
+          
+            Indicates whether to keep log file open instead of opening and closing it on each logging event.
+          
+        
+      
+    
+  
+  
+    
+      
+      
+      
+      
+      
+    
+  
+  
+    
+      
+      
+    
+  
+  
+    
+      
+      
+      
+      
+      
+      
+    
+  
+  
+    
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+    
+  
+  
+    
+      
+        
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Condition expression. Log events who meet this condition will be forwarded to the wrapped target.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Layout used to format log messages.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Layout used to format log messages.
+          
+        
+        
+          
+            Message box title.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Method name. The method must be public and static.
+          
+        
+        
+          
+            Class name.
+          
+        
+      
+    
+  
+  
+    
+      
+      
+      
+    
+    
+      
+        Layout that should be use to calcuate the value for the parameter.
+      
+    
+    
+      
+        Name of the parameter.
+      
+    
+    
+      
+        Type of the parameter.
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Action that should be taken if the message is larger than maxMessageSize.
+          
+        
+        
+          
+            Indicates whether to append newline at the end of log message.
+          
+        
+        
+          
+            Layout used to format log messages.
+          
+        
+        
+          
+            Maximum message size in bytes.
+          
+        
+        
+          
+            Encoding to be used.
+          
+        
+        
+          
+            Size of the connection cache (number of connections which are kept alive).
+          
+        
+        
+          
+            Indicates whether to keep connection open whenever possible.
+          
+        
+        
+          
+            Network address.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Indicates whether to append newline at the end of log message.
+          
+        
+        
+          
+            Instance of  that is used to format log messages.
+          
+        
+        
+          
+            Action that should be taken if the message is larger than maxMessageSize.
+          
+        
+        
+          
+            Maximum message size in bytes.
+          
+        
+        
+          
+            Encoding to be used.
+          
+        
+        
+          
+            Size of the connection cache (number of connections which are kept alive).
+          
+        
+        
+          
+            Network address.
+          
+        
+        
+          
+            Indicates whether to keep connection open whenever possible.
+          
+        
+        
+          
+            Indicates whether to include source info (file name and line number) in the information sent over the network.
+          
+        
+        
+          
+            Indicates whether to include call site (class and method name) in the information sent over the network.
+          
+        
+        
+          
+            AppInfo field. By default it's the friendly name of the current AppDomain.
+          
+        
+        
+          
+            NDC item separator.
+          
+        
+        
+          
+            Indicates whether to include  stack contents.
+          
+        
+        
+          
+            Indicates whether to include NLog-specific extensions to log4j schema.
+          
+        
+        
+          
+            Indicates whether to include  dictionary contents.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Indicates whether to perform layout calculation.
+          
+        
+        
+          
+            Layout used to format log messages.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Layout used to format log messages.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Default filter to be applied when no specific rule matches.
+          
+        
+      
+    
+  
+  
+    
+      
+      
+    
+    
+      
+        Condition to be tested.
+      
+    
+    
+      
+        Resulting filter to be applied when the condition matches.
+      
+    
+  
+  
+    
+      
+        
+          
+        
+        
+          
+            Name of the target.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Number of times to repeat each log message.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Time to wait between retries in milliseconds.
+          
+        
+        
+          
+            Number of retries that should be attempted on the wrapped target in case of a failure.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+        
+        
+          
+            Name of the target.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+        
+        
+          
+            Name of the target.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Web service URL.
+          
+        
+        
+          
+            Encoding.
+          
+        
+        
+          
+            Protocol to be used when calling web service.
+          
+        
+        
+          
+            Web service namespace.
+          
+        
+        
+          
+            Web service method name.
+          
+        
+      
+    
+  
+  
+    
+      
+      
+      
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+          
+          
+          
+        
+        
+          
+            Body layout (can be repeated multiple times).
+          
+        
+        
+          
+            Footer layout.
+          
+        
+        
+          
+            Header layout.
+          
+        
+        
+          
+            Quoting mode.
+          
+        
+        
+          
+            Quote Character.
+          
+        
+        
+          
+            Indicates whether CVS should include header.
+          
+        
+        
+          
+            Custom column delimiter value (valid when ColumnDelimiter is set to 'Custom').
+          
+        
+        
+          
+            Column delimiter.
+          
+        
+      
+    
+  
+  
+    
+      
+      
+      
+    
+  
+  
+    
+      
+      
+      
+      
+      
+      
+      
+    
+  
+  
+    
+      
+      
+    
+    
+      
+        Layout of the column.
+      
+    
+    
+      
+        Name of the column.
+      
+    
+  
+  
+    
+      
+        
+          
+        
+        
+          
+            Layout text.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+        
+        
+          
+            Body layout (can be repeated multiple times).
+          
+        
+        
+          
+            Header layout.
+          
+        
+        
+          
+            Footer layout.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+        
+        
+          
+            Condition expression.
+          
+        
+        
+          
+            Action to be taken when filter matches.
+          
+        
+      
+    
+  
+  
+    
+      
+      
+      
+      
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+        
+        
+          
+            Layout to be used to filter log messages.
+          
+        
+        
+          
+            Substring to be matched.
+          
+        
+        
+          
+            Action to be taken when filter matches.
+          
+        
+        
+          
+            Indicates whether to ignore case when comparing strings.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+        
+        
+          
+            Indicates whether to ignore case when comparing strings.
+          
+        
+        
+          
+            Layout to be used to filter log messages.
+          
+        
+        
+          
+            Action to be taken when filter matches.
+          
+        
+        
+          
+            String to compare the layout to.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+        
+        
+          
+            Layout to be used to filter log messages.
+          
+        
+        
+          
+            Substring to be matched.
+          
+        
+        
+          
+            Action to be taken when filter matches.
+          
+        
+        
+          
+            Indicates whether to ignore case when comparing strings.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+        
+        
+          
+            Indicates whether to ignore case when comparing strings.
+          
+        
+        
+          
+            Layout to be used to filter log messages.
+          
+        
+        
+          
+            Action to be taken when filter matches.
+          
+        
+        
+          
+            String to compare the layout to.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Indicates whether to use the XML format when serializing message.
+          
+        
+        
+          
+            Encoding to be used when writing text to the queue.
+          
+        
+        
+          
+            Layout used to format log messages.
+          
+        
+        
+          
+            Indicates whether to use recoverable messages (with guaranteed delivery).
+          
+        
+        
+          
+            Indicates whether to create the queue if it doesn't exists.
+          
+        
+        
+          
+            Label to associate with each message.
+          
+        
+        
+          
+            Name of the queue to write to.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Maximum number of log events that the buffer can keep.
+          
+        
+        
+          
+            Indicates whether buffer should grow as needed.
+          
+        
+        
+          
+            Number of log events to be buffered.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Layout used to format log messages.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Indicates whether to add <!-- --> comments around all written texts.
+          
+        
+        
+          
+            Layout used to format log messages.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Text to be rendered.
+          
+        
+        
+          
+            Header.
+          
+        
+        
+          
+            Footer.
+          
+        
+        
+          
+            Indicates whether to use default row highlighting rules.
+          
+        
+        
+          
+            Indicates whether the error stream (stderr) should be used instead of the output stream (stdout).
+          
+        
+      
+    
+  
+  
+    
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+    
+  
+  
+    
+      
+      
+      
+    
+    
+      
+        Background color.
+      
+    
+    
+      
+        Condition that must be met in order to set the specified foreground and background color.
+      
+    
+    
+      
+        Foreground color.
+      
+    
+  
+  
+    
+      
+      
+      
+      
+      
+      
+    
+    
+      
+        Background color.
+      
+    
+    
+      
+        Foreground color.
+      
+    
+    
+      
+        Indicates whether to ignore case when comparing texts.
+      
+    
+    
+      
+        Regular expression to be matched. You must specify either text or regex.
+      
+    
+    
+      
+        Text to be matched. You must specify either text or regex.
+      
+    
+    
+      
+        Indicates whether to match whole words only.
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Footer.
+          
+        
+        
+          
+            Text to be rendered.
+          
+        
+        
+          
+            Header.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Layout used to format log messages.
+          
+        
+        
+          
+            Name of the machine on which Event Log service is running.
+          
+        
+        
+          
+            Value to be used as the event Source.
+          
+        
+        
+          
+            Layout that renders event Category.
+          
+        
+        
+          
+            Layout that renders event ID.
+          
+        
+        
+          
+            Name of the Event Log to write to. This can be System, Application or any user-defined name.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Layout used to format log messages.
+          
+        
+        
+          
+            Indicates whether log text should be appended to the text of the control instead of overwriting it.
+          
+        
+        
+          
+            Name of control to which NLog will log write log text.
+          
+        
+        
+          
+            Name of the Form on which the control is located.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Username to change context to.
+          
+        
+        
+          
+            User account password.
+          
+        
+        
+          
+            Indicates whether to revert to the credentials of the process instead of impersonating another user.
+          
+        
+        
+          
+            Required impersonation level.
+          
+        
+        
+          
+            Windows domain name to change context to.
+          
+        
+        
+          
+            Logon Type.
+          
+        
+        
+          
+            Type of the logon provider.
+          
+        
+      
+    
+  
+  
+    
+      
+      
+      
+      
+    
+  
+  
+    
+      
+      
+      
+      
+      
+      
+    
+  
+  
+    
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Header.
+          
+        
+        
+          
+            Footer.
+          
+        
+        
+          
+            Text to be rendered.
+          
+        
+        
+          
+            Indicates whether to send message as HTML instead of plain text.
+          
+        
+        
+          
+            Indicates whether to add new lines between log entries.
+          
+        
+        
+          
+            Encoding to be used for sending e-mail.
+          
+        
+        
+          
+            Mail subject.
+          
+        
+        
+          
+            Recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).
+          
+        
+        
+          
+            BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).
+          
+        
+        
+          
+            CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).
+          
+        
+        
+          
+            Sender's email address (e.g. joe@domain.com).
+          
+        
+        
+          
+            Mail message body (repeated for each log message send in one mail).
+          
+        
+        
+          
+            Username used to connect to SMTP server (used when SmtpAuthentication is set to "basic").
+          
+        
+        
+          
+            Indicates whether SSL (secure sockets layer) should be used when communicating with SMTP server.
+          
+        
+        
+          
+            Password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic").
+          
+        
+        
+          
+            SMTP Authentication mode.
+          
+        
+        
+          
+            SMTP Server to be used for sending.
+          
+        
+        
+          
+            Port number that SMTP Server is listening on.
+          
+        
+      
+    
+  
+  
+    
+      
+      
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Performance counter instance name.
+          
+        
+        
+          
+            Counter help text.
+          
+        
+        
+          
+            Performance counter type.
+          
+        
+        
+          
+            Indicates whether performance counter should be automatically created.
+          
+        
+        
+          
+            Name of the performance counter category.
+          
+        
+        
+          
+            Name of the performance counter.
+          
+        
+      
+    
+  
+  
+    
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Layout used to format log messages.
+          
+        
+        
+          
+            Initial height of the form with rich text box.
+          
+        
+        
+          
+            Indicates whether scroll bar will be moved automatically to show most recent log entries.
+          
+        
+        
+          
+            Maximum number of lines the rich text box will store (or 0 to disable this feature).
+          
+        
+        
+          
+            Indicates whether the created form will be initially minimized.
+          
+        
+        
+          
+            Indicates whether the created window will be a tool window.
+          
+        
+        
+          
+            Name of RichTextBox to which Nlog will write.
+          
+        
+        
+          
+            Name of the Form on which the control is located. If there is no open form of a specified name than NLog will create a new one.
+          
+        
+        
+          
+            Initial width of the form with rich text box.
+          
+        
+        
+          
+            Indicates whether to use default coloring rules.
+          
+        
+      
+    
+  
+  
+    
+      
+      
+      
+      
+      
+    
+  
+  
+    
+      
+      
+      
+      
+      
+      
+      
+    
+    
+      
+        Background color. Names are identical with KnownColor enum extended with Empty value which means that background color won't be changed.
+      
+    
+    
+      
+        Font color. Names are identical with KnownColor enum extended with Empty value which means that font color won't be changed.
+      
+    
+    
+      
+        Indicates whether to ignore case when comparing texts.
+      
+    
+    
+      
+        Regular expression to be matched. You must specify either text or regex.
+      
+    
+    
+      
+        Font style of matched text. Possible values are the same as in FontStyle enum in System.Drawing.
+      
+    
+    
+      
+        Text to be matched. You must specify either text or regex.
+      
+    
+    
+      
+        Indicates whether to match whole words only.
+      
+    
+  
+  
+    
+      
+      
+      
+      
+    
+    
+      
+        Background color.
+      
+    
+    
+      
+        Condition that must be met in order to set the specified font color.
+      
+    
+    
+      
+        Font color.
+      
+    
+    
+      
+        Font style of matched text.
+      
+    
+  
+  
+    
+      
+        
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Layout used to format log messages.
+          
+        
+      
+    
+  
+  
+    
+      
+        
+          
+          
+          
+          
+          
+          
+          
+        
+        
+          
+            Name of the target.
+          
+        
+        
+          
+            Name of the endpoint configuration in WCF configuration file.
+          
+        
+        
+          
+            Endpoint address.
+          
+        
+        
+          
+            Indicates whether to use binary message encoding.
+          
+        
+        
+          
+            Client ID.
+          
+        
+        
+          
+            Indicates whether to include per-event properties in the payload sent to the server.
+          
+        
+      
+    
+  
+
\ No newline at end of file
diff --git a/Elastacloud.FluentExamples.Tests/Properties/AssemblyInfo.cs b/Elastacloud.FluentExamples.Tests/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..a0c6255
--- /dev/null
+++ b/Elastacloud.FluentExamples.Tests/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Elastacloud.FluentExamples.Tests")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Elastacloud.FluentExamples.Tests")]
+[assembly: AssemblyCopyright("Copyright ©  2013")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("56881b8c-1d29-4544-9c51-fee375878493")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Elastacloud.FluentExamples.Tests/StorageClientTests.cs b/Elastacloud.FluentExamples.Tests/StorageClientTests.cs
new file mode 100644
index 0000000..392bef3
--- /dev/null
+++ b/Elastacloud.FluentExamples.Tests/StorageClientTests.cs
@@ -0,0 +1,64 @@
+using System.Configuration;
+using System.Security.Cryptography.X509Certificates;
+using Elastacloud.AzureManagement.Fluent.Clients;
+using Elastacloud.AzureManagement.Fluent.Helpers.PublishSettings;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace Elastacloud.FluentExamples.Tests
+{
+	[TestClass]
+	public class StorageClientTests
+	{
+		static string publishSettingsFile = @"F:\Code\Fluent Management Examples Forked\noopman.publishsettings";
+		static string subscriptionId = "b951dbc2-b9f2-415d-baeb-fdd1ee98f85e";
+		const string storageAccountName = "apicatest";
+
+		static PublishSettingsExtractor settings;
+		static X509Certificate2 certificate;
+
+		StorageClient storageClient;
+
+		[ClassInitialize]
+		public static void ReadConfig(TestContext context)
+		{
+			publishSettingsFile = ConfigurationManager.AppSettings["Publish Settings File"];
+			Assert.IsNotNull(publishSettingsFile);
+
+			subscriptionId = ConfigurationManager.AppSettings["Subscription ID"];
+			Assert.IsNotNull(subscriptionId);
+		
+			settings = PublishSettingsExtractor.GetFromFile(publishSettingsFile);
+			Assert.IsNotNull(settings);
+
+			certificate = settings.AddPublishSettingsToPersonalMachineStore();
+			Assert.IsNotNull(certificate);
+		}
+
+		[TestInitialize]
+		public void CreateStorageClient()
+		{
+			storageClient = new StorageClient(subscriptionId, certificate);
+
+			Assert.IsNotNull(storageClient);
+		}
+
+		[TestMethod]
+		public void GetStorageAccountList()
+		{
+			var storageAccountList = storageClient.GetStorageAccountList();
+			Assert.IsNotNull(storageAccountList);
+		}
+
+		[TestMethod]
+		public void CreateNewStorageAccountIfNotExists()
+		{
+			storageClient.CreateNewStorageAccountIfNotExists(storageAccountName);
+		}
+
+		[TestMethod]
+		public void TryCreateNewStorageAccountIfNotExists()
+		{
+			Assert.IsFalse(storageClient.TryCreateNewStorageAccount(storageAccountName));
+		}
+	}
+}
\ No newline at end of file
diff --git a/Elastacloud.FluentExamples.Tests/packages.config b/Elastacloud.FluentExamples.Tests/packages.config
new file mode 100644
index 0000000..9cf8dc2
--- /dev/null
+++ b/Elastacloud.FluentExamples.Tests/packages.config
@@ -0,0 +1,8 @@
+
+
+  
+  
+  
+  
+  
+
\ No newline at end of file
diff --git a/Elastacloud.FluentExamples.sln b/Elastacloud.FluentExamples.sln
index aa544be..4dcce61 100644
--- a/Elastacloud.FluentExamples.sln
+++ b/Elastacloud.FluentExamples.sln
@@ -10,6 +10,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{F408B8
 		.nuget\NuGet.targets = .nuget\NuGet.targets
 	EndProjectSection
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elastacloud.FluentExamples.Tests", "Elastacloud.FluentExamples.Tests\Elastacloud.FluentExamples.Tests.csproj", "{039FF870-897E-4C78-809B-9322CC548621}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -20,6 +22,10 @@ Global
 		{2ACCFE36-B097-4658-90C0-79498BFF6EEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{2ACCFE36-B097-4658-90C0-79498BFF6EEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{2ACCFE36-B097-4658-90C0-79498BFF6EEA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{039FF870-897E-4C78-809B-9322CC548621}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{039FF870-897E-4C78-809B-9322CC548621}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{039FF870-897E-4C78-809B-9322CC548621}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{039FF870-897E-4C78-809B-9322CC548621}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/Elastacloud.FluentExamples/BuildVirtualMachine.cs b/Elastacloud.FluentExamples/BuildVirtualMachine.cs
index 2d19481..e940c42 100644
--- a/Elastacloud.FluentExamples/BuildVirtualMachine.cs
+++ b/Elastacloud.FluentExamples/BuildVirtualMachine.cs
@@ -1,9 +1,6 @@
 using System;
 using System.Collections.Generic;
-using System.Linq;
 using System.Security.Cryptography.X509Certificates;
-using System.Text;
-using System.Threading.Tasks;
 using Elastacloud.AzureManagement.Fluent.Clients;
 using Elastacloud.AzureManagement.Fluent.Commands.VirtualMachines;
 using Elastacloud.AzureManagement.Fluent.Helpers;
@@ -14,83 +11,86 @@
 
 namespace Elastacloud.FluentExamples
 {
-    public class BuildVirtualMachine : IBuilder
-    {
-        private readonly WindowsVirtualMachineProperties _properties;
-        private readonly X509Certificate2 _certificate;
-        private readonly string _subscriptionId;
-        private readonly string _rdpFile;
+	public class BuildVirtualMachine : IBuilder
+	{
+		private readonly WindowsVirtualMachineProperties _properties;
+		private readonly X509Certificate2 _certificate;
+		private readonly string _subscriptionId;
+		private readonly string _rdpFile;
+		private readonly string _storageAccountName;
+		private readonly string _storageLocationName;
 
-        public BuildVirtualMachine(string subscriptionId, string publishSettingsFile, string rdpFile)
-        {
-            var settings = PublishSettingsExtractor.GetFromFile(publishSettingsFile);
-            _certificate = settings.AddPublishSettingsToPersonalMachineStore();
-            _subscriptionId = subscriptionId;
-            _rdpFile = rdpFile;
-            _properties = new WindowsVirtualMachineProperties()
-                             {
-                                 AdministratorPassword = "Password101!",
-                                 RoleName = "stackedliverpool",
-                                 DeploymentName = "stackedliverpool",
-                                 Certificate = _certificate,
-                                 Location = LocationConstants.NorthEurope,
-                                 UseExistingCloudService = false,
-                                 SubscriptionId = subscriptionId,
-                                 CloudServiceName = "stackedliverpool",
-                                 PublicEndpoints = new List(new[]
-                                                                               {
-                                                                                   new InputEndpoint()
-                                                                                       {
-                                                                                           EndpointName = "web",
-                                                                                           LocalPort = 80,
-                                                                                           Port = 80,
-                                                                                           Protocol = Protocol.TCP
-                                                                                       }
-                                                                               }),
-                                 VirtualMachineType = VirtualMachineTemplates.WindowsServer2012,
-                                 VmSize = VmSize.Medium,
-                                 StorageAccountName = "stackedstorage",
-                                 DataDisks = new List(new[] {
-                                     new DataVirtualHardDisk(){LogicalDiskSizeInGB = 100}
-                                 })
-                             };
-        }
+		public BuildVirtualMachine(string subscriptionId, string publishSettingsFile, string rdpFile, string storageAccountName, string storageLocationName, string cloudServiceName, string deploymentName, string roleName, string administratorPassWord)
+		{
+			var settings = PublishSettingsExtractor.GetFromFile(publishSettingsFile);
+			_certificate = settings.AddPublishSettingsToPersonalMachineStore();
+			_subscriptionId = subscriptionId;
+			_rdpFile = rdpFile;
+			_storageAccountName = storageAccountName;
+			_storageLocationName = storageLocationName;
+			_properties = new WindowsVirtualMachineProperties
+											{
+												 AdministratorPassword = administratorPassWord,
+												 RoleName = roleName,
+												 DeploymentName = deploymentName,
+												 Certificate = _certificate,
+												 Location = LocationConstants.NorthEurope,
+												 UseExistingCloudService = false,
+												 SubscriptionId = subscriptionId,
+												 CloudServiceName = cloudServiceName,
+												 PublicEndpoints = new List(new[]
+												 {
+													 new InputEndpoint
+													 {
+														 EndpointName = "web",
+														 LocalPort = 80,
+														 Port = 80,
+														 Protocol = Protocol.TCP
+													 }
+												 }),
+												 VirtualMachineType = VirtualMachineTemplates.WindowsServer2012,
+												 VmSize = VmSize.Medium,
+												 StorageAccountName = _storageAccountName,
+												 DataDisks = new List(new[]
+												 {
+													 new DataVirtualHardDisk
+														 {
+															 LogicalDiskSizeInGB = 100
+														 }
+												 })
+											 };
+		}
 
-        void IBuilder.SpinUp()
-        {
-            var storageClient = new StorageClient(_subscriptionId, _certificate);
-            storageClient.CreateNewStorageAccount("stackedstorage");
-            var client = new WindowsVirtualMachineClient(_subscriptionId, _certificate);
-            var newClient = client.CreateNewVirtualMachineFromTemplateGallery(_properties);
-            Console.WriteLine("Virtual machine now created - with diskname {0}", 
-                newClient.VirtualMachine.OSHardDisk.DiskName);
-            Console.WriteLine("Getting and saving RD file");
-            client.SaveRemoteDesktopFile(_rdpFile);
-        }
+		void IBuilder.SpinUp()
+		{
+			var storageClient = new StorageClient(_subscriptionId, _certificate);
+			storageClient.CreateNewStorageAccountIfNotExists(_storageAccountName, _storageLocationName);
+			var client = new WindowsVirtualMachineClient(_subscriptionId, _certificate);
+			var newClient = client.CreateNewVirtualMachineFromTemplateGallery(_properties);
+			Console.WriteLine("Virtual machine now created - with diskname {0}", newClient.VirtualMachine.OSHardDisk.DiskName);
+			Console.WriteLine("Getting and saving RD file");
+			client.SaveRemoteDesktopFile(_rdpFile);
+		}
 
-        void IBuilder.TearDown()
-        {
-            var client = new WindowsVirtualMachineClient(_properties);
-            string ipAddress = client.VirtualMachine.NetworkConfigurationSet.InputEndpoints[0].Vip;
-            
-            Console.WriteLine("The VIP is {0}", ipAddress);
-
-            client.DeleteVirtualMachine();
-            Console.WriteLine("Virtual machine has been deleted, with cloud service and storage");
-        }
-
-        X509Certificate2 IBuilder.ManagementCertificate
-        {
-            get { return _certificate; }
-        }
-
-        string IBuilder.SubscriptionId
-        {
-            get { return _subscriptionId; }
-        }
-    }
-}
+		void IBuilder.TearDown()
+		{
+			var client = new WindowsVirtualMachineClient(_properties);
+			string ipAddress = client.VirtualMachine.NetworkConfigurationSet.InputEndpoints[0].Vip;
 
+			Console.WriteLine("The VIP is {0}", ipAddress);
 
+			client.DeleteVirtualMachine();
+			Console.WriteLine("Virtual machine has been deleted, with cloud service and storage");
+		}
 
+		X509Certificate2 IBuilder.ManagementCertificate
+		{
+			get { return _certificate; }
+		}
 
+		string IBuilder.SubscriptionId
+		{
+			get { return _subscriptionId; }
+		}
+	}
+}
\ No newline at end of file
diff --git a/Elastacloud.FluentExamples/Elastacloud.FluentExamples.csproj b/Elastacloud.FluentExamples/Elastacloud.FluentExamples.csproj
index 01a42d7..2d95292 100644
--- a/Elastacloud.FluentExamples/Elastacloud.FluentExamples.csproj
+++ b/Elastacloud.FluentExamples/Elastacloud.FluentExamples.csproj
@@ -13,6 +13,21 @@
     512
     ..\
     true
+    publish\
+    true
+    Disk
+    false
+    Foreground
+    7
+    Days
+    false
+    false
+    true
+    0
+    1.0.0.%2a
+    false
+    false
+    true
   
   
     AnyCPU
@@ -77,6 +92,7 @@
     
     
     
+    
   
   
     
@@ -88,6 +104,23 @@
     
     
   
+  
+    
+      False
+      Microsoft .NET Framework 4.5 %28x86 and x64%29
+      true
+    
+    
+      False
+      .NET Framework 3.5 SP1 Client Profile
+      false
+    
+    
+      False
+      .NET Framework 3.5 SP1
+      false
+    
+