this is not 100% optimised in terms of block count however i do think that this is roughly a more ideal version of the project