big changes! total rewrite incoming!