refactored units so we can make more types