first commit
abstracting metaclasses from existing projects