Initial structure
Structure change
Changed structure and added initial implementation of Synchronous (untested)