fully functional, with a few bugs here and there (specifically, draw has not been tested)