add proper length check