make it faster
better error reporting