Working implementation

Need to clean up