feature complete, somewhat tested... v1