yet another implementation of 2048