Abstract away editor(.cpp)

I know it may seem like a poor design choice to declare classes and using
them once, but it improves modularity
Add more features to editor