finished major part of implementation. this may work