#21 almost complete
#26 almost complete