Many improvements and implements functionality