typoe, doc, realllly need to test and refactor