some concurrency from the vogella tutorial