add examples. split Error out to its own module (presumably there will be more possible errors later)