non persistant version
added a persitence layer and more features. this culd be called like a unstable alpha nghly something... I mean, this can be used. Kind of