Initial Implementation (basic functionality only tested on Linux)