added tedious parts