Finalized another option. It's designed to be simple and extendable