Currently restructuring and rewriting. Do not use.