basically functional, although I still want to add more.