basic functionality complete, but needs validation