almost finished with interface (might actually be done, should only be minor tweaking)