An empirical study on the impact of static typing on software maintainability