seems like initialize function could be cleaned up, but leaving like this for now