compiling with warnings, maybe i don't need the ugly return values after fail