Almost done with the interface, still need to debug.