* avoid calling substr