made it a little bit more portable by providing own implementations of