solves most of issues in #12 still need to review before close