Implement defclass macro
Clean up core.clj