Refactoring, new files included.