a little refactor and added future construct tests