split the unique file in two parts

we splitted the implementation of the functions to the commented
declaration so that one can only read the public file and understand
what the library does without having to read the actual code.