removed at()/clen(), added real sub() + tests, corrected docs