closes #26 and enchance