Everything implemented except stretch & minor stuff