in progress. half broken, but half working, I guess