Finish interface rewrite, add vertical option, many other fixes