now uses some validation