requires more error validation