implement missing features WIP