added smart indententation (hopefully), no vi compatability, and UTF encoding