added a few more pieces, total refactor needed