I will implement the expansion to other areas and post it again once done, as this will be a major change in the codebase