overhaul! probably buggy luca fix it!!