apply ActiveSupport and restructue fields related methods
implement CRUD