Initial impl with some missing features