Get rid of copy-paste (shame to me!)
Add Type::Tiny for more strict checking