i should probably go back and optimize these solutions