adding interface methods
adding concurrency code
adding channels