Implemented all public functions except for dispatchBus()
I have no idea if they work correctly.