working. But need to fix some display bugs