working, not finished. required gui improvement