Initial implementation with a need to add testing and demo code