* Implement Interface metaclasses to do type checking to make sure certain functions get implemented * Implement auto property detection somehow * Rewrite the documentation * annotate public facing functions to take a string from the shell and convert it to an object internally for referential transparency