TODO: * Create a documentation * Add more error checks KNOWN BUGS: * none known