finished. need to merge in one method