Added some basic public interfaces, implementations and tests