make a few assumptions for the sake of speed