Makes it more generic so I can reuse it unchanged in other projects