The Core Technologies Blog

Our Software // Windows Services // 24×7 Operation

An Early Look at Windows Server 2019

Windows Server 2019 Preview

Have you heard? Microsoft is set to release Windows Server 2019 later this year. It seems that consumer releases (like Windows 10) are launched with trumpets and parades while server releases sneak up on you in the middle of the night! :)

So what’s new in Windows Server 2019?

Here are our highlights from the August 2018 Insider preview (Build 17744):

  1. Windows Admin Center (WAC): Microsoft’s powerful browser-based server management tool is a one-stop-shop for administering PC’s — locally or remotely. Check out our review of WAC for a deeper look.

    Windows Admin Center
  2. Windows Defender Advanced Threat Protection (ATP): Beyond the traditional preventative protection technologies found in previous versions Defender, ATP features support for post-breach intrusion detection, automated investigation, and more.

    Windows Threat Protection
  3. Improved Security for Linux VM’s: Linux virtual machines can now benefit from Server 2016′s Shielded Virtual Machines technology, which can help to prevent the unauthorized copying of company resources.

  4. Support for Kubernetes (in Beta): Administrators running Kubernetes pods will be happy to see first-class support for the popular container technology in Server 2019. This beta version is a respectable start and we look forward to continued improvements on the way to a general release early next year.

Any updates for Windows Services?

Server 2019 brings no documented changes to the Windows Services SDK functions. The Services Control Panel application remains the same as it has for many years now.

The only significant difference is the removal of the Interactive Services Detection service, which makes it impossible to access Session 0 in Server 2019. This is not a surprise though; Microsoft is being consistent with the same change made in Windows 10 build 1803 (released in April).

Does AlwaysUp work with Server 2019?


Our week-long testing with various applications failed to uncover a single defect or problem.

Here is AlwaysUp happily running Dropbox as a Windows Service:

AlwaysUp running Dropbox on Server 2019

Does Service Protector run fine too?

The story was the same with Service Protector. No problems at all on Server 2019.

Here we see Service Protector protecting the Windows Defender Firewall Service:

Service Protector on Windows Server 2019

And how about all your other utilities?

Thumbs up there too!

Utilities running on Windows Server 2019

Where can I find out more about Windows Server 2019?

Posted in Windows | Tagged , , , , , | Leave a comment

Q & A: How do I get AlwaysUp to run Java.exe in the PATH?

Q & A - Java

I run a Java program EchoLink Proxy as part of Ham Radio networking. A routine update replaced the Java folder with its new version number thus my AlwaysUp Application field to run the program needed manual edit from:

C:\Program Files (x86)\Java\jre1.8.0_171\bin\java.exe


C:\Program Files (x86)\Java\jre1.8.0_181\bin\java.exe

I tried simply providing “Java.exe” (which works from a CMD prompt) but AlwaysUp requires the full-path. How can I get AlwaysUp to run the Java.exe in my PATH environment variable?

— Anonymous

Hi. AlwaysUp expects a full path, so I see the problem!

We recommend adding a “layer of indirection” to solve the problem. Please:

  1. Create a new Windows batch file that runs your full java command line. However, instead of specifying the full path to java, simply use java.exe.

    When run, the batch file will use whatever java.exe is in your Windows account’s PATH variable.

    Here is what our simple batch file (saved to “C:\Tools\start-java-app.bat”) looks like:

    Start Java Batch File

    Please open a command prompt, run your batch file and confirm that it launches your program (EchoLink Proxy) as you expect.

  2. Update your AlwaysUp entry to run the new batch file. Specify the full path to the batch file in the Application field on the General tab:

    Run the Batch File in AlwaysUp

    Be sure to clear the Arguments field if it contains the parameters for the Java command line! Those should already appear in the batch file.

  3. And on the AlwaysUp Logon tab, specify the Windows account you are logged in to right now. Java must be launched in this account so that it finds the correct PATH environment value.

    Set the account for running Java as a service
  4. Finally, update the new batch file to add a 5 second delay at the end. We recommend using the Windows TIMEOUT command, but there are several alternatives:

    timeout /t 5

    Without this adjustment, the batch file may exit very quickly and fool AlwaysUp into thinking that the batch file failed to start properly.

    Add a Timeout to the Batch File
  5. Save your batch file — and your settings in AlwaysUp.

Now, when you start your modified entry from AlwaysUp, the following will happen:

  1. AlwaysUp will start the batch file

  2. The batch file will launch Java from the PATH, as you have configured

  3. The batch file will “sleep” for 5 seconds

  4. The batch file will exit

  5. AlwaysUp will notice that the batch file has exited and “attach” to the Java.exe child process

  6. AlwaysUp will continue to monitor Java.exe and restart it (via the batch file) if it ever crashes/fails/exits.

Any monitoring, reporting and alerts you have configured should continue to work as they did before.

Please let us know if you run into any trouble implementing this approach!

Posted in AlwaysUp | Tagged , , , , , | Leave a comment

Q & A: My VB6 App Doesn’t Refresh in Session 0 — Help!

We have a VB6 application we’re running as a service in AlwaysUp on Windows Server 2012 R2. When we run the application outside of AlwaysUp, the form refreshes fine. When we run the application in AlwaysUp, it can sometimes take several minutes for the form to refresh, starting out as a black form (see screenshot of Session 0 below). Any recommendations you might have to help with the refresh rate would be appreciated, thanks.

Application not refreshing in Session 0

— Jim Kinghorn, Taylor Technology Services

Hi Jim. You are running into one of the peculiarities of Session 0 — where user interface elements do not seem to be refreshed consistently. Unfortunately it is a “Windows thing” and is outside the control of AlwaysUp.

But all is not lost! Our development team took a look at your situation and concluded that calling the Windows RedrawWindow API function in Session 0 might fix the problem.

You have a couple of options:

Option #1: Update your code to refresh all windows periodically

Specifically, your code should:

  • Refresh the desktop window, by calling the VB6 equivalent of:


  • Enumerate all top-level windows (using the EnumWindows API function) and call RedrawWindows on each visible window.

Performing those operations every few seconds should eliminate the black windows in Session 0.

Option #2: Setup our “RefreshWindows” utility to run in Session 0

If updating the code is not a viable option, you can:

  • Download our free RefreshWindows command line utility and save it to a folder of your choice. When run, the utility refreshes all windows every 5 seconds (using the RedrawWindows and EnumWindows functions as recommended above):

    Running RefreshWindows
  • Set it up as a Windows Service with AlwaysUp. All you should have to provide is the full path to the executable file on the “General” tab:

    Setup RefreshWindows as a Windows Service with AlwaysUp

When your machine boots, AlwaysUp will launch RefreshWindows.exe to ensure that all windows in Session 0 are periodically refreshed and properly drawn.


Posted in AlwaysUp | Tagged , , , , , , , | Leave a comment

Interactive Services Detection Service Removed in Windows 10 (so no more Switching to Session 0)

Session 0 is Off Limits

Microsoft has finally done it. Session 0 is officially off limits.

The Interactive Services Detection Service — necessary to switch to Session 0 — has been removed in Windows 10 Version 1803 (released in April 2018). While applications running in Session 0 will happily create windows and prompts, no one will be able to see them.

But this is no big surprise. The geeks in Redmond have been marching in this direction for many years.

A brief history of Session 0 and Interactive Windows Services

Windows NT (1993)

The concept of multiple login sessions in solidified in this foundational release of Windows. Session 0 is created at boot, interactive Windows Services are supported and the first user to log in is placed in Session 0.

Windows Vista (2007)

To avoid shatter attacks, Vista prohibits users from logging in to Session 0. That new world order is dubbed “Session 0 Isolation”. The Interactive Services Detection service is introduced to allow users to temporarily access Session 0 — a band-aid for interactive Windows Services that show windows and prompts.

Windows 8 & Windows Server 2012

Microsoft continues to discourage interactive services. The NoInteractiveServices registry value, which enables the Interactive Detection Service and switching to Session 0, is set to 1 by default. This prevents anyone from switching to Session 0 (unless the registry is updated).

Windows 10 & Windows Server 2016

The keyboard and mouse no longer function in Session 0. This unwelcome behavior was widely thought to be a bug that Microsoft would eventually resolve, but it now looks like a deliberate action intended to cripple interaction with Session 0.

Windows 10, version 1703 (2017)

Microsoft promises to remove the Interactive Services Detection service in this Spring Creators Update but for some reason the service remains.

Windows 10, version 1803 (2018)

The Interactive Services Detection service is officially removed. Switching to Session 0 is forbidden.

So what exactly are the ramifications of losing the Interactive Services Detection service?

Consequence #1: You won’t be able to switch to Session 0 from AlwaysUp on Windows 10

While your application will continue to run as normal in Session 0, attempting to switch to Session 0 will result in an error (reported on the Status Bar):

AlwaysUp: Switch to Session 0 fails
To see your application’s windows on your desktop, please restart your application in the current session. That option is available from the Application menu:
Restart in the Current Session

Consequence #2: Our Switch to Session 0 utility won’t work on Windows 10

Switch to Session 0 will run happily in your taskbar but you will encounter an error when you try to switch. Not surprisingly, the message says that the Interactive Services Detection service “does not exist as an installed service”:

Switch to Session 0 Error

Sayonara Session 0!

Posted in Windows Services | Tagged , , , , , | Leave a comment

Q & A: How can I see my Java Console Window when Running as a Service with AlwaysUp?

Q & A -Show Java Console Window

I am running a Java application as a windows service with AlwaysUp. My JAR starts up fine and seems to be working as expected but I can’t see the Java console window to make sure that there are no errors. How can I see the console window?

— Alain Thiré, Thikro

Hi Alain. You cannot see your Java console window because it is running in a different Windows “Session”.

Let me explain a bit about Sessions and how they work:

  1. When you log into your PC, Windows creates a Session for you. That Session holds your desktop and all the programs you start. All your applications (processes) run inside that Session. Think of the Session as your own private room, holding all your things.

  2. If your wife logs in, she receives her own Session to hold all the applications she uses. Her Session is completely separate from yours and any program she starts will only be visible to her on her desktop. She gets her own private room.

  3. When your computer starts, windows creates a special Session for all services. That is, Windows Services have their own room. And because this is the first Session created, it is named Session 0.

Now when AlwaysUp starts your application as a Windows Service, it launches it in Session 0 (the home for all Windows Services). And because you are logged into a completely different Session (perhaps Session 1 or Session 2), you will not be able to see your application’s windows on your desktop. Your Java application isn’t in your room.

But fortunately that is not the end of the story. Here are three ways to see what Java is printing to the console.

Solution #1: Temporarily Switch to Session 0

Windows gives you the opportunity to view the Session 0 desktop whenever a window is displayed there. Click View the message when the Interactive Services Detection alert pops up:

Interactive Services Detection Dialog

AlwaysUp allows you to access Session 0 at any time. Simply select Tools > Switch to Session 0 from the menu:

Switch to Session 0 from the Menu

Or click the “monitor” button on the toolbar to do the same:

Switch to Session 0 from the Toolbar

Now be warned — Session 0 is a strange looking place! You won’t see a task bar, desktop icons or the familiar start button. Here is what the austere Session 0 looks like with Notepad running:

Session 0 with Notepad Running

Click Return now to revert to the safety of your normal desktop.

Note: Switching to Session 0 may not be a viable option on Windows 10 and Windows Server 2016 because you will be unable to use the keyboard and mouse in Session 0. Unfortunately there is no workaround and we cannot confirm if/when Microsoft will address this annoying problem.

Solution #2: Restart your Java application in your Session

A second way to view the Java window is to have AlwaysUp restart your Java application in your login session. Select Application > Restart in this session to have the console appear on your desktop, alongside your other windows:

Restart in this session

AlwaysUp will automatically return your application to Session 0 after you log off (or you can return it manually).

The obvious downside of this approach is that your application has to be stopped. Might a brief interruption cause problems? If so, restarting in your session may not be the solution for you.

Solution #3: Capture the Java console output to a file

The final solution reframes the problem. Instead of seeing the Java console window, is viewing the text printed in the window good enough?

If so, setup AlwaysUp to capture the console output to a text file. Activate the option and specify the full path to the log file on the Extras tab:

Capture Java console output

Simply open the text file to see what Java has printed to the console. Or even better, use a free “tail” utility to follow the file’s additions in real time. Both Powershell’s Get-Content cmdlet and Tail for Win32 have worked well for our team.

Best of luck with your Java application/service!

Posted in AlwaysUp | Tagged , , , , , | Leave a comment

Q & A: Why is AlwaysUp Reporting the Wrong CPU and Memory for Backup and Sync?

Q & A - Backup and Sync

I am using AlwaysUp for Google Backup and Sync as a windows service. My files are syncing but in checking the processes on the server, Backup and Sync is showing 30% CPU usage and 688 MB memory. Yet AlwaysUp in its daily reports quite often shows CPU as 0/0 and Memory as 2.2/11. As you can see the average is suspect and the peak is way off. Am I missing something in setting up the daily reports?

— Oscar Romo, TECHsperience

Hi Oscar. Your configuration is not to blame. That puzzling situation is the result of how Backup and Sync operates. Let me explain.

Backup and Sync runs in an executable named googledrivesync.exe. The Task Manager will show that process running on your server:

googledrivesync.exe in Task Manager

But wait — why are there two googledrivesync.exe processes??

If we pull out the big guns (i.e. Microsoft’s excellent Process Explorer) to investigate, we see that the first instance of googledrivesync has spawned the second as part of normal operation. And furthermore, while the first process is idle, the second/child process seems to be working pretty hard (its CPU is almost 50%):

googledrivesync.exe in Process Explorer

This “two-process operation” explains the discrepancy you have noticed.

When AlwaysUp launches Backup and Sync, it monitors the first googledrivesync.exe process that was created. Because that process doesn’t use much CPU or RAM, AlwaysUp will present very modest numbers in its daily and weekly summary reports.

However, when you check the processes on the server, you are likely looking at the second googledrivesync.exe process. That child process seems to be doing the heavy lifting, leading to higher CPU and RAM values in Task Manager.

The end result is that the CPU & memory measurements in AlwaysUp’s reports may not be very useful when running Backup and Sync as a service. Sorry about that. Rest assured that your files will always be copied though, which is the main job you hired our software to perform. :)

Please be sure to get in touch if you have any followup questions.

Happy syncing!

Posted in AlwaysUp | Tagged , , , | Leave a comment

Running Multiple Windows Services? AlwaysUp 11 is Here to Help!

Check out what's new in AlwaysUp 11

With all the excitement of a freshly minted high-school graduate, we are pleased to announce the release of AlwaysUp version 11!

This major update maintains laser focus on the software’s singular purpose — running your important applications and programs 24×7, as Windows Services.

But if you are one of the thousands of individuals and companies managing more than a single application, pay attention. These changes may deliver delight. :)

Introducing Tags for Applications

You can now associate one or more tags with each application. Tags are specified on the General tab when editing your application:

Adding Tags to a Windows Service

The new “Tags” column on the main window lists all the tags you have assigned to your applications:

AlwaysUp Application Tags

Managing Tags for Multiple Applications

Instead of adding or removing tags from each application individually, you can also update multiple applications at once. To do so, select the applications you would like to change and choose the appropriate operation from the “Application” menu:

AlwaysUp Tags Menu

Selecting Add… brings up the Add Tags window. Enter (or choose) the tags you wish to apply to the selected services and click Next to proceed:

Add Tags to Multiple Services

Remove All summons the Remove Tags window to wipe away all tags from the selected applications:

Remove All Tags from Multiple Services

Filtering the List of Applications

The new Filter Pane allows you to easily filter the list of applications. Select View > Filter Pane (or hit the F3 key) and the new controls will appear underneath the toolbar:

AlwaysUp Filter Pane

The list of applications can be filtered in three ways:

  1. By tag: Select a tag to show only applications with that tag
  2. By text: Type in text to match only applications featuring that text
  3. By disabled/enabled status: Easily exclude applications that have been disabled.

When filtering by text, cells containing the search text will be highlighted:

Filter Pane: Text Highlighting

See More Applications by Hiding List Headers

Screen space is precious when managing 50+ services. To help with that situation, you can now select View > List Headers to hide the attractive (but hefty) panel above the list of applications.

But why stop there! Hide the Toolbar and Status Bar (also via the View menu) to produce a spartan, streamlined look:

Filter Pane: Text Highlighting

Other fixes & improvements

  • Loading the Activity Panel could take several seconds if your Windows Event Logs contained thousands of entries. With AlwaysUp 11, the same process will take less than a second.

  • When capturing your console application’s output to a file, the data is flushed more frequently. This makes the process highly responsive. Long periods of inactivity are handled with greater efficiency as well.

  • To stop a customer running over 80 applications from slapping himself in the head whenever he accidentally selected “Start All” from the “Application” menu, AlwaysUp now confirms some lengthy operations involving more than 5 applications.

  • The setting on the Logon tab to hide the application’s windows in Session 0 (to avoid unwelcome alerts from the Interactive Services Detection service) has been renamed for clarity.

As usual, please review the version history for the full list of features, fixes and improvements included in this release.

Upgrading to AlwaysUp Version 11.0

As per our upgrade policy, if you purchased AlwaysUp version 10 (after January 2017) you can upgrade to version 11.0 for free. Just download and install “over the top” to preserve your existing applications an all settings. Your registration code will continue to work.

If you bought AlwaysUp version 9 or earlier (before January 2017), you will need to upgrade to use version 11.0. Please purchase upgrades here — at a 50% discount.


Posted in AlwaysUp | Tagged , , | Leave a comment

Windows Admin Center or PC Commander?

Windows Admin Center vs. PC Commander

Last month, we wrote about Microsoft’s new Windows Admin Center (WAC). Our focus was on using WAC to manage your windows services:

Windows Admin Center: Services

But as the links in the left panel suggest, WAC can do much more than start, stop and edit services. Indeed, WAC is powerful tool — very similar to our free, PC Commander utility:

PC Commander

How does Windows Admin Center compare to PC Commander?

Both products allow you to manage key aspects of a computer through your web browser, including:

  • Processes
  • Services
  • Drives

And you can easily reboot your computer remotely with either one as well.

But there are a few key differences:

  • PC Commander works on any version of Windows while WAC can only be installed on Windows 10 build 1709 and later

  • At this point, PC Commander is much easier to install. (We ran into several problems setting up WAC on our Windows 10 computer.)

  • WAC supports multiple languages; PC Commander is English-only.

  • With WAC, you can work with certificates, devices, firewall and registry settings. Those areas are not available in PC Commander.

  • PC Commander seems considerably faster than Windows Admin Center. For example, on our dual-processor Windows 10 machine, it took WAC 16 seconds to display the list of processes. PC Commander completed the same operation in less than 3 seconds.

  • You can browse the contents of your hard drives with PC Commander. Easily to view or download files.

  • With WAC, you can see information about disks, volumes and file shares.

  • WAC allows you to manage user accounts. For example, you can edit, delete, change group membership.

  • PC Commander shows you who is logged on and allows you to log them off.

Our conclusion: Windows Admin Center is a more complete remote management tool, with huge potential if Microsoft and partners continue to invest in improvements. But if you want no-hassle setup and speedy operation — today — PC commander is likely the better choice.


Posted in PC Commander | Tagged , , | Leave a comment

Manage Your Windows Services with Windows Admin Center

In April 2018, Microsoft released Windows Admin Center (WAC) — a new web-based tool for managing PCs remotely.

With Windows Admin Center, administrators can perform many routine tasks from the browser, including:

  • List all processes on your PC
  • Start a new program or terminate one already running
  • Start, stop or restart any windows service
  • Browse the event logs
  • Navigate the registry
  • Change an account’s password

Check out WAC’s left sidebar to get an idea of what is possible:

Windows Admin Center: Overview

As experts in Windows Services, we were very excited to see what Microsoft is doing in that area! This article highlights the functionality we discovered in the Services section.

Working with Windows Services

When you click Services in the left sidebar, a list of all windows services installed on your computer is displayed on the right. Here we see that there are a whopping 241 services available on our Windows 10 machine!

Windows Admin Center: Services

The ability to search comes in handy when you are looking for a specific service. Type in a few characters to match on the name, display name and description fields:

WAC: Search Windows Services

Select a service from the list to reveal its very basic details in the panel below. Only the service’s name, display name, description and a list of dependent services are shown:

WAC: Windows Service Details

You can start, stop, pause or resume the selected service using the buttons at the top. There is no button to restart the service, but obviously that can be achieved by stopping then starting again.

To show additional details and update the service, click the Settings button at the top. Here is what we see for the important Dhcp service:

WAC: DHCP Service: General Settings

In the General section, you can change the service’s startup mode to dictate when Windows launches the service. Curiously, Automatic (Delayed Start) is not an option!

WAC: No Automatic (Delayed Start) Startup Mode

Microsoft will surely rectify that oversight soon.

Another surprise: You can alter the service’s command line (path to executable)! In that respect, WAC is more powerful than the venerable Services Control Panel application, which shows the image path as read-only.

If you click over to the Log On section, you can set the account in which the service will run. No surprises there:

WAC: DHCP Service: Log On Settings

In the Recovery section, specify one of four actions to be taken if the service fails:

WAC: DHCP Service: Recovery Settings

Note that not all options available in Services.msc are configurable here. For example, you cannot append a fail count to the end of a command line or configure options when restarting the computer:

WAC: Missing Service Recovery Options

Be cautious when changing your service’s recovery settings from WAC!

Installing Windows Admin Center: The Fine Print

While we were clearly able to get WAC up and running, we encountered a few obstacles along the way. We mention them here for future travelers:

  • WAC only runs on Microsoft’s newest operating systems. We had to upgrade our Windows 10 machine to Build 1709 (the lone desktop OS supported).

    Windows 10 Build 1709
  • WAC has only been tested with the Microsoft Edge and Google Chrome browsers on Windows 10. Firefox fanatics and Safari supporters may be out of luck.

  • If you have trouble with authentication, make sure that the WinRM service is running. Despite being configured to start automatically, that service wasn’t running and we had to start it manually on our PC.

    Run NET START WinRM to do the honors.

  • After we added our PC to the list and tried to connect, WAC repeatedly told us that our credentials weren’t valid. We tried several accounts (all with admin access) to no avail.

    The problem? Our PC is in a Workgroup instead of a Domain and we’re not using the builtin admin account. Fortunately we came across this page which advised us to run this magical command (verbatim) from an elevated prompt:

    REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1

  • Check out the full list of admin center troubleshooting tips if you run into anything else.


Posted in Windows Services | Tagged , , , | Leave a comment

Q & A: What Setting will Help AlwaysUp Start my App at Boot?

Q & A - Restart Windows

I’m running on Windows Server 2016. I have noticed on my most recent install that AlwaysUp doesn’t start at boot, I have to do an interactive/RDP login and then open the AlwaysUp GUI to have the services started. Is there any setting that I need to change to make this happen please?

— Robert

Hi Robert. There could be many reasons why a generic Windows Service doesn’t start at boot. But when AlwaysUp is involved, the failure is usually because your service/application is trying to start too soon. Here are a couple of reasons why:

  1. Your application depends on a Windows Service

    System software will often be deployed as a windows service. Notable examples include the Apache web server, the MySQL relational database and the Redis memory store.

    If your application depends on a service, then you should configure the dependency on the Startup tab. Check the Ensure that the following services have started box and select your service from the list below:

    Set Dependent Services in AlwaysUp

    However, this setting may not work as expected. While it ensures that the critical service has started before AlwaysUp launches your application, there is no guarantee that the service will actually be ready.

    For example, suppose the Redis service takes a minute to initialize before connections are accepted. If your application tries to start before those 60 seconds have elapsed, it will fail to connect to Redis and will likely crash or exit with an error.

  2. You are running AlwaysUp on a Domain Controller (DC)

    Let’s say that your machine is a Domain Controller and you have specified a domain account on the AlwaysUp Logon tab. If Windows tries to kick off AlwaysUp before the DC is fully ready, the AlwaysUp service will fail to start because it can’t log in. You will see a cryptic message like this in the Windows/Application section of the Event Log:

    Windows Service Logon Failure

    To resolve this scenario, add a dependency on the “Workstation” service on the AlwaysUp Startup tab. Some customers have had success with that change but it hasn’t worked for others.

General Solution: Delayed Startup on Boot

Irrespective of the underlying problem, many customers have profited from a simple solution: delaying the startup of your AlwaysUp application. Your application is very likely to start properly once it avoids the “mad rush” of programs straining to start as your PC comes alive.

To delay startup, choose the Automatically, but shortly after the computer boots option on the General tab:

Delay startup on boot in AlwaysUp

With that modification, your application will start 1-2 minutes after your computer boots — when all critical components should be happily running.

Hopefully this easy change will do the trick. Please be sure to get in touch if the problem persists!

Posted in AlwaysUp | Tagged , , , | Leave a comment