lots of changes. It kinda works!