Working! Need some further testing though