I think this method should be scaled down to several smaller