huge block of copypasting, you can do this in only one block