rewrite/refactor everything.