moved public api classes to own module