Implemented software objects as mentioned in issue #45 and added some JSDoc comments