now fully functional, minus UI