add better editor abstraction