starting work on 2d implementation