committing current code as a lot of restructuring may be required