done for now. will refactor later?