Implement #258 #259 #261 #262
Fix #263
Implement #266.
Implement #267 & #268