separate files; closes #43