Mostly working design. Has some bugs still to fix.