almost done, need to port core and then make the cli