Refactor into separate files and use extension method for decrement