Kinda works. Needs more testing