cleaner data constructors, data casting