Slight refactoring
custom exceptions
package refactoring