basic framework is there, clean up is still needed