added most of the missing features