initial draft working; still implementing some features