TODO:
 * Add more tests
 * More attributes: untrusted

Maybe TODO:
 * Add more optional checking (out of bounds, validity, etc)
