rewrote module system, it now works
changed module call convention