using template method pattern to encapsulate variability in editor types for different files