fixed properties, callbacks, logical errors and more (it basically works now)