Add System class and tests