broke up constructor into helper methods